include files

Hello! Help me please.I want to use Ogre3D in mex (for s-function). http://www.ogre3d.org/ But my .cpp file contains OGRE's include files which Matlab doesn't see. In Visual Studio it can be adjusted in properties of solution. http://s001.radikal.ru/i196/1104/e6/e04d2a5746f8.jpg Is it possible to make so in Matlab? I will be grateful for any answer.Thank you.

 采纳的回答

Jarrod Rivituso
Jarrod Rivituso 2011-4-2

0 个投票

When you use the mex function, you should be able to use the -I flag to specify the include directories.
Is that what you are looking for?

5 个评论

Natalia
Natalia 2011-4-2
May be I do something not correctly... But at me the following message
mex -l $(OGRE_HOME)\samples\include
C:\PROGRA~1\MATLAB\R2010B\BIN\MEX.PL: Error: '$(OGRE_HOME)\samples\include' not found.
??? Error using ==> mex at 208
Unable to complete successfully.
Hmm... can you try it without using the $OGRE_HOME? I wonder if that is your problem.
Note that you can access environment variables in MATLAB using the getenv function. For instance, getenv('path')
Natalia
Natalia 2011-4-2
getenv ('C:\OgreSDK\samples\include')
ans =
''
mex -lC:\OgreSDK\samples\include
Usage:
MEX [option1 ... optionN] sourcefile1 [... sourcefileN]
[objectfile1 ... objectfileN] [libraryfile1 ... libraryfileN]
Use the -help option for more information, or consult the MATLAB API Guide.
C:\PROGRA~1\MATLAB\R2010B\BIN\MEX.PL: Error: No file names given.
Hi Natalia,
You need to put both the include path and the source files. So, for instance...
mex -IC:\OgreSDK\samples\include mymexfile.c
getenv() requires the name of an environment variable as its input, such as
getenv('OGRE_HOME')
to verify that OGRE_HOME is set.

请先登录,再进行评论。

更多回答(2 个)

Natalia
Natalia 2011-4-2
I should do this operation for each folder? Or it is enough to add a folder which includes all the others?
In Visual Studio it looks:
Code
+ Configuration Properties
General
* Output Directory: $(OGRE_HOME)\bin\$(ConfigurationName)
* Intermediate Directory: $(OGRE_HOME)\obj\$(ConfigurationName)
Debugging
* Command: $(OGRE_HOME)\bin\$(ConfigurationName)\$(TargetFileName)
* Working Directory: $(OGRE_HOME)\bin\$(ConfigurationName)
C++
General
* Additional Include Directories: ..\include;$(OGRE_HOME)\include;$(OGRE_HOME)\samples\include
Linker
General
* Additional Library Directories: "$(OGRE_HOME)\lib"
Input
* Additional Dependencies: OgreMain_d.lib OIS_d.lib

1 个评论

Yes, you will need to add each include path and the library directories. Use the -l and -L flags to add library paths (-l) and actual library files (-L).
Again, the documentation has a table of all supported compiler switches:
http://www.mathworks.com/help/techdoc/ref/mex.html

请先登录,再进行评论。

Natalia
Natalia 2011-4-2
mex -IC:\OgreSDK\samples\include ExampleApplication.h
C:\PROGRA~1\MATLAB\R2010B\BIN\MEX.PL: Error: 'ExampleApplication.h' not found.
??? Error using ==> mex at 208
Unable to complete successfully.
I do not understand why there is an error...
And if I have 1000 include files.... I should specify all of them? By the way, simstruc.h I shouldn't specify a file, is it mean there are default folders in matlab?

3 个评论

You don't have to specify names of header files - the -I option is added for the _directory_ containing the header files. You need something like:
mex -IC:\OgreSDK\samples\include -IC:\OgreSDK\include -I"..\include" -LC:\OgreSDK\lib mymexfile.c -l OgreMain_d.lib -l OIS_d.lib
Yes, simstruc.h is in a MATLAB directory that is automatically included by MEX
Natalia
Natalia 2011-4-5
Thank you! Your answers as always the most exact and clear for me :)
Glad to be of help. :)

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Adding custom doc 的更多信息

产品

标签

Community Treasure Hunt

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

Start Hunting!

Translated by