【发布时间】:2016-05-10 03:03:29
【问题描述】:
我正在尝试在 MATLAB 中构建一个 mex 函数。该函数依赖于 C++ 库。但是,无论我做什么,我都会在 MATLAB 中得到未解决的外部问题。我创建了三个简单的文件来演示这个问题:
my_test123.h
_declspec(dllexport) void my_test();
my_test.cpp
extern "C" {
#include "my_test123.h"
}
void my_test() {
}
我使用命令编译并链接上面的两个文件:
cl /LD /Femy_test.dll my_test.cpp
这会生成两个文件,my_test.lib 和 my_test.dll。
第三个文件是一个微不足道的 mexfunction:
my_mex.cpp
#include "mex.h"
extern "C" {
void my_test();
}
/* The gateway function */
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
my_test();
}
在 MATLAB 中,我使用以下命令:
mex -v my_mex.cpp my_test.lib
我也试过了:
mex -v my_mex.cpp -lmy_test.lib
所有文件都在同一个目录中,并且 mex 命令正在查找 .lib 文件(如果我尝试使用随机名称而不是 my_test.lib ,则会收到文件未找到错误)。
我得到的错误是:
使用 mex 时出错 创建库 my_mex.lib 和对象 my_mex.exp my_mex.obj:错误 LNK2019:函数 mexFunction 中引用的未解析外部符号 my_test my_mex.mexw64 : 致命错误 LNK1120: 1 unresolved externals
我还尝试将每个文件都制作为 C 文件(删除 externs 并将 mexfunciton 扩展名更改为 .c)并在 C 中编译。但我得到了同样的错误。
我正在使用 Visual Studio 2013 和 64 位版本的 MATLAB 2014b。
非常感谢任何帮助。
【问题讨论】: