【发布时间】:2014-11-17 12:13:18
【问题描述】:
我有一个 C++ 头文件和相应的静态库(.lib 文件)。没有源文件。 代码包含几个类,每个类都有自己的功能。
我希望能够从 MATLAB 中调用这些函数。
有人能帮我指出正确的方向吗?示例将不胜感激。
谢谢。
编辑:编写一个 DLL 作为静态库和 MATLAB 之间的接口是个好主意吗?然后我可以从 DLL 访问我的静态库中的函数,并使用 calllib 从 MATLAB 访问 DLL。 如果是这样,我将如何从 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 上尝试?
【问题讨论】:
-
看看
calllib。您可能需要一个包装器来调用类函数。 -
@Naveh 是 calllib 不仅用于共享库吗?我只有一个静态库和相应的头文件 - 没有源文件。
-
您的 DLL 方法与此处讨论的人们相同 :) mathworks.com/matlabcentral/answers/… 此处为 stackoverflow.com/questions/24704251/… 示例
-
@AliHaroon 是的,我真傻 :P 然后使用 mex 方法
-
感谢您的建议!我正在编写一个 DLL,我将链接静态库并通过使用
calllib从 MATLAB 调用函数
标签: c++ matlab static-libraries