Building for the Matlab Box

Post Reply
Antonio
Posts: 2
Joined: Sat Oct 22, 2011 10:24 am

Building for the Matlab Box

Post by Antonio »

Hi!
I've read in the documentation the possibility of using a Matlab box, and i would like to try it (i'm working on the Win7 OS).
I've tried to add the matlab box uncommenting the line:

Code: Select all

echo %OpenViBE_plugin_matlab% >> %OpenViBE_build_order%
in the win32_init_env_command.cmd file and adding the line

Code: Select all

SET OV_DEP_MATLAB=C:\MATLAB\r2011a
in the win32-dependencies.cmd file.

But I had these errors (i believe related to the 3 initial warnings):

Code: Select all

1>LINK : warning LNK4199: /DELAYLOAD:libeng.dll ignored; no imports found from libeng.dll
1>LINK : warning LNK4199: /DELAYLOAD:libmx.dll ignored; no imports found from libmx.dll
1>LINK : warning LNK4199: /DELAYLOAD:libmex.dll ignored; no imports found from libmex.dll
1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engOpen referenced in function "private: bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::OpenMatlabEngineSafely(void)" (?OpenMatlabEngineSafely@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@AAE_NXZ)
1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _mxCreateDoubleMatrix_730 referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::initialize(void)" (?initialize@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engEvalString referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::initialize(void)" (?initialize@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engClose referenced in function "private: bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::CloseMatlabEngineSafely(void)" (?CloseMatlabEngineSafely@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@AAE_NXZ)
1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _mxDestroyArray referenced in function "private: bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::CloseMatlabEngineSafely(void)" (?CloseMatlabEngineSafely@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@AAE_NXZ)
1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _mxGetDimensions_730 referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _mxIsDouble referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engGetVariable referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engPutVariable referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engOutputBuffer referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _mxGetPr referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
1>C:\Openvibe\local-tmp\visual\trunc\Debug\OpenViBE-plugins-matlab-dynamic.dll : fatal error LNK1120: 11 unresolved externals
Any suggestion :roll: ?
Thank you,

Antonio

lbonnet
Site Admin
Posts: 417
Joined: Wed Oct 07, 2009 12:11 pm

Re: Building for the Matlab Box

Post by lbonnet »

Hi Antonio !

Code: Select all

1>ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engOpen referenced in function "private: bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::OpenMatlabEngineSafely(void)" (?OpenMatlabEngineSafely@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@AAE_NXZ)
It seems like the linker does not find the Matlab .lib files.

When building the Matlab Filter box, you should have the CMAKE log just before the compilation. Please copy-paste this part of the build,so we can check if CMAKE found matlab (and its libs).
You should have :

Code: Select all

--   Found Matlab...
--     [  OK  ] Third party lib C:/Program Files/MATLAB/R2011a/extern/lib/win32/microsoft/libmex.lib
--     [  OK  ] Third party lib C:/Program Files/MATLAB/R2011a/extern/lib/win32/microsoft/libmx.lib
--     [  OK  ] Third party lib C:/Program Files/MATLAB/R2011a/extern/lib/win32/microsoft/libeng.lib
In my case Matlab is installed in C:/Program Files/, so I have:

Code: Select all

SET OV_DEP_MATLAB=C:\Program Files\MATLAB\r2011a
Laurent-

Laurent-
Follow us on twitter >> openvibebci

Checkout my (old) blog for some OpenViBE tips & tricks : here !

Antonio
Posts: 2
Joined: Sat Oct 22, 2011 10:24 am

Re: Building for the Matlab Box

Post by Antonio »

Hi,
Thank you for the answer.
I'm not sure to have understood exactly what copy-paste, anyway i think it could be the file BuildLog.htm (BuildLog of the OpenViBE-plugins-matlab-dynamic).

Code: Select all

Build Log
 	 	

Build started: Project: OpenViBE-plugins-matlab-dynamic, Configuration: Debug|Win32

Command Lines
 	 	

Creating temporary file "c:\Openvibe\local-tmp\visual\trunc\OpenViBE-plugins-matlab-dynamic.dir\Debug\RSP00005956045284.rsp" with contents
[
/OUT:"C:\Openvibe\local-tmp\visual\trunc\Debug\OpenViBE-plugins-matlab-dynamic.dll" /VERSION:0.0 /INCREMENTAL /LIBPATH:"C:\Openvibe\openvibe\trunc\lib\Debug" /LIBPATH:"C:\Openvibe\openvibe\trunc\lib" /LIBPATH:"C:\Openvibe\openvibe-toolkit\trunc\lib\Debug" /LIBPATH:"C:\Openvibe\openvibe-toolkit\trunc\lib" /LIBPATH:"C:\Openvibe\openvibe-modules\system\trunc\lib\Debug" /LIBPATH:"C:\Openvibe\openvibe-modules\system\trunc\lib" /DLL /MANIFEST /MANIFESTFILE:"OpenViBE-plugins-matlab-dynamic.dir\Debug\OpenViBE-plugins-matlab-dynamic.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Openvibe\local-tmp\visual\trunc\Debug\OpenViBE-plugins-matlab-dynamic.pdb" /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\Openvibe\local-tmp\visual\trunc\Debug\OpenViBE-plugins-matlab-dynamic.lib"  /STACK:10000000 /machine:X86 /debug /DELAYLOAD:libeng.dll /DELAYLOAD:libmx.dll /DELAYLOAD:libmex.dll kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib  C:\Openvibe\openvibe\trunc\lib\OpenViBE-dynamic.lib C:\Openvibe\openvibe-toolkit\trunc\lib\OpenViBE-toolkit-dynamic.lib C:\Openvibe\openvibe-modules\system\trunc\lib\OpenViBE-module-System-dynamic.lib Delayimp.lib

".\OpenViBE-plugins-matlab-dynamic.dir\Debug\ovpCBoxAlgorithmMatlabFilter.obj"

".\OpenViBE-plugins-matlab-dynamic.dir\Debug\ovp_main.obj"

".\OpenViBE-plugins-matlab-dynamic.dir\Debug\OpenViBE-plugins-matlab-dynamic.dll.embed.manifest.res"
]
Creating command line "link.exe @"c:\Openvibe\local-tmp\visual\trunc\OpenViBE-plugins-matlab-dynamic.dir\Debug\RSP00005956045284.rsp" /NOLOGO /ERRORREPORT:PROMPT"

Output Window
 	 	

Linking...
   Creating library C:\Openvibe\local-tmp\visual\trunc\Debug\OpenViBE-plugins-matlab-dynamic.lib and object C:\Openvibe\local-tmp\visual\trunc\Debug\OpenViBE-plugins-matlab-dynamic.exp
LINK : warning LNK4199: /DELAYLOAD:libeng.dll ignored; no imports found from libeng.dll
LINK : warning LNK4199: /DELAYLOAD:libmx.dll ignored; no imports found from libmx.dll
LINK : warning LNK4199: /DELAYLOAD:libmex.dll ignored; no imports found from libmex.dll
ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engOpen referenced in function "private: bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::OpenMatlabEngineSafely(void)" (?OpenMatlabEngineSafely@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@AAE_NXZ)
ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _mxCreateDoubleMatrix_730 referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::initialize(void)" (?initialize@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engEvalString referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::initialize(void)" (?initialize@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engClose referenced in function "private: bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::CloseMatlabEngineSafely(void)" (?CloseMatlabEngineSafely@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@AAE_NXZ)
ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _mxDestroyArray referenced in function "private: bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::CloseMatlabEngineSafely(void)" (?CloseMatlabEngineSafely@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@AAE_NXZ)
ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _mxGetDimensions_730 referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _mxIsDouble referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engGetVariable referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engPutVariable referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _engOutputBuffer referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
ovpCBoxAlgorithmMatlabFilter.obj : error LNK2019: unresolved external symbol _mxGetPr referenced in function "public: virtual bool __thiscall OpenViBEPlugins::Local::CBoxAlgorithmMatlabFilter::process(void)" (?process@CBoxAlgorithmMatlabFilter@Local@OpenViBEPlugins@@UAE_NXZ)
C:\Openvibe\local-tmp\visual\trunc\Debug\OpenViBE-plugins-matlab-dynamic.dll : fatal error LNK1120: 11 unresolved externals

Results
 	 	

Build log was saved at "file://c:\Openvibe\local-tmp\visual\trunc\OpenViBE-plugins-matlab-dynamic.dir\Debug\BuildLog.htm"
OpenViBE-plugins-matlab-dynamic - 12 error(s), 3 warning(s)
Thanks,

Antonio

ddvlamin
Posts: 160
Joined: Thu Aug 13, 2009 8:39 am
Location: Ghent University
Contact:

Re: Building for the Matlab Box

Post by ddvlamin »

Hi,

Sorry, maybe we missed this post.

I think lbonnet refers to the log or the output on the comand line while compiling openvibe. I'm not sure where it is saved, but you can catch its output by compiling with the following command "win32-build.cmd > compile_log.txt". Somewhere it should indicate lines with square brackets (like in lbonnet's post) with either the status OK or FAILED, those are the lines he is interested in (only the ones concerning matlab).

anyway the path you gave to matlab in the win32-dependencies.cmd file, is it the right path to your matlab directory (I assume so, but you never know)?

Hopefully, the developers will be able to help you further.

Best regards,
Dieter Devlaminck

Post Reply