在MATLAB的静态库中调用C ++类成员函数

时间:2014-11-17 12:13:19

标签: c++ matlab static-libraries

我有一个C ++头文件和相应的静态库(.lib文件)。没有源文件。 代码包含几个类,每个类都有自己的函数。

我希望能够从MATLAB中调用这些函数。

有人能够指出我正确的方向吗?例子将不胜感激。

感谢。

编辑:编写DLL作为静态库和MATLAB之间的接口是不是一个好主意?然后我可以从DLL访问我的静态库中的函数,并使用calllib从MATLAB访问DLL。 如果是这样,我将如何从DLL中调用静态库中的类成员函数?

更新 所以我决定编写一个DLL,我将链接静态库并使用calllib从MATLAB调用函数 问题是,静态库已经编译,我没有源。我尝试链接.lib文件(可能是使用Visual Studio构建)并使用MINGW32构建我的DLL,但这可能不会因(lack of?) interoperability of libraries created by different compilers.而起作用 这是我用来链接的MinGW命令:g++ -c -o -DBUILDING_INTERMEDIATE_DLL intermediate_dll.cpp -TaccClient.lib

intermediate_dll.cpp 是我的DLL的源文件, TaccClient.lib 是我正在使用的静态库。

有没有人对此如何运作有任何建议,或者我是否需要等待以后再在Visual Studio上试用?

1 个答案:

答案 0 :(得分:0)

MATLAB提供MATLAB编码器功能,允许您从C / C ++源文件和库文件创建MEX文件。在为应用程序构建MEX文件时,还可以选择调用C共享库。我使用SIMULINK(使用SIMULINK Coder)和嵌入式编码器进行我的库链接,它可以帮助你通过GUI完成它,所以非常干净的工作。但是,只要您拥有受支持的C / C ++编译器,您仍然可以使用MATLAB。

使用C共享库选项,您应该能够加载,调用,查看库和函数。有关其他功能可用的更多详细信息,请参阅 - http://uk.mathworks.com/help/matlab/using-c-shared-library-functions-in-matlab-.html

回答了类似的问题here。可能你会发现它有用吗?