Обнаружена ошибка в emxArray_uint8_T: .text + 0xc1): неопределенная ссылка на `emxInit_uint8_T1 (emxArray_uint8_T **, int) '? - PullRequest
0 голосов
/ 06 мая 2018

Я пишу функцию Matlab, которая вычисляет энтропию изображения в оттенках серого: "Score = Score_entropy (Image)", а затем использую кодер Matlab для преобразования его в C ++

код C ++:

</p>

<pre><code>#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();
}
</code>

Определение 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 Ответ

0 голосов
/ 07 мая 2018

Скомпилируйте и скомпонуйте все сгенерированные файлы CPP вместе, и это решит проблему компоновщика. Похоже, вы просто связываете некоторые из них.

Также убедитесь, что вы вызываете сгенерированную функцию _initialize, прежде чем вызывать сгенерированную точку входа.

...