从emxArray_uint8_T检测到错误:.text+0xc1):未定义对"emxInit_uint8_T1(emxArray_uint8_T**, int)"的引用?

Error detected from emxArray_uint8_T: .text+0xc1): undefined reference to `emxInit_uint8_T1(emxArray_uint8_T**, int)'?

本文关键字:uint8 emxArray 引用 T1 int 未定义 检测 错误 text+0xc1 emxInit      更新时间:2023-10-16

>我写了一个matlab函数来计算灰度图像的熵:"score=score_entropy(image(",然后使用matlab编码器将其转换为C ++

C++ 代码:

#include "mex.h"
#include "math.h"
#include "score_entropy.cpp"
#include"score_entropy_emxAPI.cpp"
class image
{
public: 
unsigned char *im;
int h1,w1;
voide scoreimage();
}
void image::scoreimage( )
{ emxArray_uint8_T* I=emxCreateWrapper_uint8_T(im,h1,w1);
double ent=score_entropy(I);
emxDestroyArray_uint8_T(I);
}
void mexFunction( int nl, mxArray *pl[], int nr, const mxArray *pr[] )
{
image.im = ( unsigned char*) mxGetData(pr[0]);
image. h1 = (int) imgSize[0];
image. w1 = (int) imgSize[1];
image.scoreimage();
}

score_entropy.cpp的定义: 双score_entropy(常量emxArray_uint8_T *IM(

我发现了一个错误列表:

(.text+0xc1): undefined reference to `emxInit_uint8_T1(emxArray_uint8_T**, int)' (.text+0xfb): undefined reference to `emxEnsureCapacity_uint8_T(emxArray_uint8_T*, int)' (.text+0x16c):undefined reference to `emxInit_uint8_T(emxArray_uint8_T**, int)' .. .. (.rdata$.refptr.rtMinusInf[.refptr.rtMinusInf]+0x0): undefined reference to `rtMinusInf' collect2.exe: error: ld returned 1 exit status

任何人都可以帮助更正此代码?

编译所有生成的 CPP 文件并将其链接在一起,这将解决链接器问题。看起来您只是链接了其中的一些。

此外,请确保在调用生成的入口点之前调用生成的_initialize函数。