gpt4 book ai didi

从 matlab 调用 c 函数

转载 作者:行者123 更新时间:2023-11-30 20:14:31 27 4
gpt4 key购买 nike

我在从 matlab 调用 c 函数时遇到了很多麻烦。

我的c函数很简单

测试.c

#include "mex.h"

int addOne(int a)
{
return a+1;
}

我在 matlab 命令窗口中输入 mex test.c,收到此错误消息

Undefined symbols for architecture x86_64:
"_mexFunction", referenced from:
-exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

mex: link of ' "test.mexmaci64"' failed.

我的Matlab是2013a,osx 10.9,xcode 5.02

有人对此有什么想法吗?谢谢。

最佳答案

这是一个帮助您入门的简单示例:

addOne.cpp

#include "mex.h"

double addOne(double a)
{
return a+1;
}

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
if (nrhs!=1 || nlhs>1) mexErrMsgIdAndTxt("mex:error", "Wrong num of args");
if (!mxIsDouble(prhs[0])) mexErrMsgIdAndTxt("mex:error", "Not double");

plhs[0] = mxDuplicateArray(prhs[0]);

double *x = mxGetPr(plhs[0]);
size_t len = mxGetNumberOfElements(plhs[0]);
for (size_t i=0; i<len; ++i) {
x[i] = addOne(x[i]);
}
}

MATLAB:

>> mex -largeArrayDims addOne.cpp
>> x = magic(4)
x =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> addOne(x)
ans =
17 3 4 14
6 12 11 9
10 8 7 13
5 15 16 2

关于从 matlab 调用 c 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26051463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com