emscripten-core / emscripten-core/emscripten

Build c++ script with opencv issue

Open
#8,554 12 comments 3 reactions 0 assignees View on GitHub
wontfix
Dominant language
C++
Stars
27.6k
Forks
3.6k
Avg merge
1d 1h
Merged PRs (30d)
105

Description

hi there

this is my cpp script :

`
#include
#include
#include
#include

#include
#include
#include
#include
#include

using namespace std;
using namespace cv;

Mat src;

extern "C" {
int version(uint8_t *buf, uint8_t *target, int bufLen)
{

uint8_t* newBuf = target;
int i;

float ratio[30] = {0};
float num = 29;
float step = 1/num;
for(int i=0; i<30;++i){
ratio[i] = i*step;
}

float **array;
array=new float*[121680];// 180*26*26
for(int i=0;i<121680;i++)
{
array[i]=new float[3];
memset(array[i],0,3*sizeof(float));
}
for(int i=0; i<30; i++){
array[i*676 + 675][0] = 1 - ratio[i];
array[i*676 + 675][1] = ratio[i];
array[i*676 + 675][2] = 0;
}
for(int i=30; i<60; i++){
array[i*676 + 675][0] = 0;
array[i*676 + 675][1] = 1 - ratio[i-30];
array[i*676 + 675][2] = ratio[i-30];
}
for(int i=60; i<90; i++){
array[i*676 + 675][0] = 0;
array[i*676 + 675][1] = ratio[i-60];
array[i*676 + 675][2] = 1 - ratio[i-60];
}
for(int i=90; i<120; i++){
array[i*676 + 675][0] = 0;
array[i*676 + 675][1] = 1 - ratio[i-90];
array[i*676 + 675][2] = ratio[i-90];
}
for(int i=120; i<150; i++){
array[i*676 + 675][0] = 0;
array[i*676 + 675][1] = ratio[i-120];
array[i*676 + 675][2] = 1 - ratio[i-120];
}
for(int i=150; i<180; i++){
array[i*676 + 675][0] = ratio[i-150];
array[i*676 + 675][1] = 1 - ratio[i-150];
array[i*676 + 675][2] = 0;
}

for(int i=24;i>=0;i--){
for(int j=0; j<180; j++){
array[676*j + 26*i + 25][0] = (array[j*676 + 675][0])*i/25.0;
array[676*j + 26*i + 25][1] = (array[j*676 + 675][1])*i/25.0 + (1 - i/25.0);
array[676*j + 26*i + 25][2] = (array[j*676 + 675][2])*i/25.0;
}
}
for(int i=24;i>=0;i--){
for(int j=25; j>=0; j--){
for(int k=0; k<180; k++){
array[k*676 + j*26 + i][0] = (array[k*676 + j*26 + 25][0])*i/25.0;
array[k*676 + j*26 + i][1] = (array[k*676 + j*26 + 25][1])*i/25.0;
array[k*676 + j*26 + i][2] = (array[k*676 + j*26 + 25][2])*i/25.0 +(1 - i/25.0);
}
}
}
vector vec_data(&buf[0], &buf[0] + bufLen);
src = imdecode(vec_data,1);
// ...
delete [] array;
return 1;

}
}
`

the problem is, it will give error like
`error: undefined symbol: _ZN2cv8fastFreeEPv
error: undefined symbol: _ZN2cv8imdecodeERKNS_11_InputArrayEi
Error: Aborting compilation due to previous errors
`

any clue how to link the missing library?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.