c++ - 从 emxArray_uint8_T 检测到错误:.text+0xc1):未定义对 `emxInit_uint8_T1(emxArray_uint8_T**, int)' 的引用?
问题描述
我写了一个计算灰度图像熵的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 的定义: 双分数熵(常量 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
在调用生成的入口点之前调用生成的函数。
推荐阅读
- c# - Powershell 脚本作为 Topshelf/Windows 服务
- javascript - 隐藏角度材料中的重复列数据
- sed - 如何在另一个文件中用 HTML 实体替换 UTF-8 字符?
- python - 新手问题 - 将函数分成两部分
- python - Pytest:在 setup_method 中使用固定装置
- python - 在 Python 中使用用户输入结束循环
- javascript - “m 未定义” discord.js 消息收集器
- swift - 抓取保存在 Firebase 中的数据并将其呈现在视图控制器上
- php - PHP XSLTProcessor 去除样式属性和标签
- java - 渲染后敌人的消失(Java 游戏)