繁体   English   中英

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

[英]Call C++ class member functions in a static library from MATLAB

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

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

有人会友好地指出我正确的方向吗? 例子将不胜感激。

谢谢。

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

更新因此,我决定编写一个DLL,将其链接到静态库,并使用calllib通过它调用MATLAB中的函数。问题是,静态库已编译,并且我没有源代码。 我尝试链接.lib文件(大概是使用Visual Studio构建的),并使用MINGW32构建我的DLL,但是由于(缺少?)由不同编译器创建的库的互操作性,这可能无法正常工作 这是我用来链接的MinGW命令: g++ -c -o -DBUILDING_INTERMEDIATE_DLL intermediate_dll.cpp -TaccClient.lib

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

有人对它如何工作有任何建议吗,还是我必须等一会儿再在Visual Studio上尝试一下?

MATLAB提供了MATLAB编码器功能,使您可以从C / C ++源文件和库文件创建MEX文件。 为您的应用程序构建MEX文件时,还有一个选项称为C共享库。 我已经使用SIMULINK(带有SIMULINK Coder)和Embedded Coder来进行我的库链接,它可以帮助您通过GUI进行链接,因此非常整洁。 但是,只要拥有受支持的C / C ++编译器,您仍然可以使用MATLAB进行操作。

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

这里也回答类似的问题。 也许您会发现它有用吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM