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

Posted

技术标签:

【中文标题】从 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)'?从 emxArray_uint8_T 检测到错误:.text+0xc1):未定义对 `emxInit_uint8_T1(emxArray_uint8_T**, int)' 的引用? 【发布时间】:2018-05-06 18:43:05 【问题描述】:

我写了一个计算灰度图像熵的matlab函数:“score=score_entropy(image)”然后使用matlab coder将其转换为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 的定义: 双分数熵(const 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

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

【问题讨论】:

【参考方案1】:

编译并链接所有生成的 CPP 文件,这将解决链接器问题。您似乎只是在链接其中的几个。

还要确保在调用生成的入口点之前调用生成的 _initialize 函数。

【讨论】:

我在调用入口点之前调用了 score_entropy_initialize(),但仍然有相同的错误加上 (.text+0x107c):未定义对 `score_entropy_initialize()' 的引用。我还能做什么以及如何链接所有文件。

以上是关于从 emxArray_uint8_T 检测到错误:.text+0xc1):未定义对 `emxInit_uint8_T1(emxArray_uint8_T**, int)' 的引用?的主要内容,如果未能解决你的问题,请参考以下文章

从 uint8_t* 到 uint32_t 的无效转换 - 从 32 位架构迁移到 64 位架构时?

为啥使用动态 ptr 数组检测到分段错误或双重释放?

从分类到检测_从0学习yolov3_万字文章干货满满

将 Google AdMob SDK 从 7.7.0 更新到 7.8.0 未定义符号错误

为“_MSC_VER”检测到错误 LNK2038 不匹配:值“1700”与 xxxx.obj 中的值“1900”不匹配

RStudio没有检测到Rtools