Visual c++ 用C+编译mex文件+;通过matlab:无法访问头文件 我需要用MATLAB 2009编写一个用C++编写的MEX文件(VS 2008)。如果我直接用VS 2008编译,似乎Matlab不兼容,错误是:

Visual c++ 用C+编译mex文件+;通过matlab:无法访问头文件 我需要用MATLAB 2009编写一个用C++编写的MEX文件(VS 2008)。如果我直接用VS 2008编译,似乎Matlab不兼容,错误是:,visual-c++,linker-errors,header-files,mex,lnk2019,Visual C++,Linker Errors,Header Files,Mex,Lnk2019,//无效的MEX文件 因此,我尝试直接使用MEX函数与Matlab融为一体。在“mex-设置”中,我选择了 //C:\PROGRA~1\MATLAB\R2009a\sys\Lcc中的Lcc-win32 C 2.4.1 编译用MATLAB,但只编译C而不是C++,我的代码是C++。 然后我选择了 程序\\微软Visual Studio 9 < /P> < P> /微软Visual C++ 2008 SP1 用Matlab中的VS2008进行编译。对于一个简单的测试C++文件,它工作了。mex文件非

//无效的MEX文件

因此,我尝试直接使用MEX函数与Matlab融为一体。在“mex-设置”中,我选择了

//C:\PROGRA~1\MATLAB\R2009a\sys\Lcc中的Lcc-win32 C 2.4.1

<>编译用MATLAB,但只编译C而不是C++,我的代码是C++。 然后我选择了

程序\\微软Visual Studio 9 < /P> < P> /微软Visual C++ 2008 SP1 用Matlab中的VS2008进行编译。对于一个简单的测试C++文件,它工作了。mex文件非常完美。然后我添加了一些头文件和一个函数来调用其中一个头文件中的类。我在项目中添加了“Aria”头文件,出现了上述错误

//您可以在其中找到头文件的Aria网站:(http://robots.mobilerobots.com/wiki/ARIA)

头文件与主程序位于同一目录中,所有库文件都在VC++项目中定义。在“附加库目录”中,我再次添加了它们的路径。当我通过VC++构建我的项目时,没有错误。但是当我尝试使用Matlab中的MEX时,就会出现这种错误。(C++文件的名称是“test”)

// Microsoft(R)增量链接器版本9.00.21022.08

版权所有(C)微软公司。版权所有

test.obj:错误LNK2019:未解析的外部符号“\u declspec(dllimport)public:static void\u cdecl Aria::init(enum Aria::signandlemethod,bool,bool)”(\u imp??init@Aria@@SAXW4SigHandleMethod@1@_N1@Z)在函数_main中引用 test.mexw32:致命错误LNK1120:1未解析的外部

C:\PROGRA~1\MATLAB\R2009A\BIN\MEX.PL:错误:“test.mexw32”的链接失败

???在218处使用==>mex时出错 无法成功完成。 //

测试项目时,我在一个头文件中写了一个小类,并在C++文件中使用了该类,它工作了!我不知道为什么其他课程不起作用。它们相互链接,大约有140个.h文件

有人知道为什么会这样吗?
为什么我在VC++中构建、发布和调试项目时没有错误,但当我尝试用Matlab编译MEX文件时,却出现了此错误?

所有头文件和必要的库都需要编译

//mex name.cpp name.h name.lib

这里是WinMM.Lib、WSock32.Lib和AdvAPI32.Lib