필터 지우기
필터 지우기

compiler issue - 'Dependecy problem'

조회 수: 13 (최근 30일)
lp2015
lp2015 2016년 10월 6일
편집: Mihaela Duta 2016년 10월 13일
Hi all,
I'm having issues with matlab's deploytool while I try to compile a program that uses the psychtoolbox libary. I do not have issues using the compiler with programs that do not use psychtoolbox. I know that psychtoolbox isn't an official mathworks toolbox but I think this might be a problem with my use of the the compiler more than a problem with psychtoolbox.
A few details:
Os: windows 10
matlab: R2013a
PsychtoolboxVersion: 3.0.13
Bug description:
When I use matlab's deploytool, the compiler finishes to build the exe with no problems, but when i open the exe file i get an error mesage: "Failed to load PsychPortAudio driver for unknown reason! Dependency problem?" .
I noticed that the 'mccExcludedFiles.log' lists many times Psychtoolbox functions.
An example line from this file: (log file is attached)
| _C:\Program Files\MATLAB\R2013a\toolbox\psychtoolbox\psychoneliners\Ellipse.m
called by C:\Program Files\MATLAB\R2013a\toolbox\matlab\scribe\private\legendHGUsingMATLABClasses.p
(C:\Program Files\MATLAB\R2013a\toolbox\compiler\depfun.opts, line 7:
exclude if $caller in [$toolbox/matlab, $toolbox/daq] and ...
$file in $toolbox and ...
$file not in [$toolbox/matlab, $toolbox/shared, $toolbox/compiler] ...
and not ($file in $toolbox/distcomp and $caller in $toolbox/matlab))_|
I should note that psychtoolbox is well defined at the top of my matlab path, and I do not have any problems with running psychtoolbox. Only with compiling.
Assuming that this might mean that psychtoolbox is not listed in the compiler path, I tried to manually add the psychtoolbox folder to the compiler path ( as seen in the screenshot attached), but still no luck.
Any ideas? Any help will be great!
Thank you.
Attached:
-screenshot of error msg shown when exe file is opened
-screenshot of compiler settings
- mccExcludedFiles.log

채택된 답변

Mihaela Duta
Mihaela Duta 2016년 10월 11일
편집: Mihaela Duta 2016년 10월 13일
You get the dependency error because portaudio dll file cannot be found. This can be fixed with the following steps:
  • Inside the folder with the code to be compiled, create a subfolder, let's say resources, where you copy the portaudio dll files from the PsychSound folder.
  • Inside the folder with the code to be compiled create a copy of the InitializePsychSound.m file renamed InitializePsychSound2compile.m
  • Edit InitializePsychSound2compile.m to point PsychtoolboxRoot to the resources folder, by adding the following line to the top of the InitializePsychSound2compile function
PsychtoolboxRoot = 'resources/';
  • In the code where psychportaudio is needed, use InitializePsychSound2compile instead of the original InitializePsychSound.m.
  • You may also need to delete the PsychHardware folder from the psychtoolbox folder before attempting to compile - unless, of course, your code requires code from that folder.
When using your compiled code, make sure that the resources folder is always a subfolder in the folder you have the resulting executable file.
You can run your compiled code directly, or you can run it through the command line, which will allow you to see warnings, errors and output to standard output. On Windows, you can create a .cmd file to call your aplication, using
call yourappname.exe
You can of course create a desktop link to the .cmd file for ease of access.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Timing and presenting 2D and 3D stimuli에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by