C++ .lib 文件到墨西哥
C++ .lib file to mex
我想知道是否有人有从 .lib 文件创建 mex 文件的经验C++。我得到了一个 .lib 及其相应的 .h 文件,需要使 .lib 可以从 Matlab 调用。
旁注:因为 c++ 文件是 .lib,所以我看不到 .lib 文件的实现,但我能够进行其 .h 中定义的调用。
提前致谢
你的.lib很可能不支持Matlab格式,所以你必须制作包装函数。这是一个小例子(其中addMat((可以是.lib中的函数(
#include "mex.h"
//#include "Your_lib.h"
// Your local C++ function
void addMat( double *in1, double *in2, double *out, int R, int C)
{
for (int n=0; n<R*C; n++)
{
out[n] = in1[n]+in2[n];
}
}
// The Matlab wrapper
void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
double *inMat1,*inMat2,*outMat;
mwSize R,C;
// Pointer to an mxArray of type double
inMat1 = mxGetPr(prhs[0]);
inMat2 = mxGetPr(prhs[1]);
// Get size (assume both are the same as 1st arg)
R = mxGetM(prhs[0]);
C = mxGetN(prhs[0]);
// Create an real output mxArray of size [R,C]
plhs[0] = mxCreateDoubleMatrix(R,C,mxREAL);
outMat = mxGetPr(plhs[0]);
// Call your own function or lib
addMat(inMat1,inMat2,outMat,R,C);
}
如果你的包装文件被调用addMat.cpp
那么你可以编译为
mex addMat.cpp
它将生成一个 mex 文件,在 Matlab 中运行它:
A=addMat([1 2 3;1 1 1],[10 11 12; 2 2 2])
A =
11 13 15
3 3 3
带有外部库的构建命令应该是这样的
mex -I<include dir> -L<lib dir> -l<your lib>.lib addMat.cpp
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- C++ .lib 文件到墨西哥
- 从Octave CLI构建墨西哥文件