Как новый, как я есть на C++, я не совсем понимаю эту связь и прочее. И я думаю, что это примерно extern "C"
.Неразрешенные внешние и внешние «С»?
extern "C"
{
int loadbmp(char *filename, unsigned char **buf,
int *w, int *h, int pf, int bottomup);
const char *bmpgeterr(void);
}
unsigned char *srcBuf=NULL, **jpegBuf=NULL;
unsigned long jpegsize=0;
int width, height;
char *filename={"Screenshot158139.bmp"};
tjhandle handle=NULL;
void main(){
if(loadbmp(filename, &srcBuf, &width, &height,TJPF_RGB, 0)==-1){
//printf("Could not load bitmap: %s\n", bmpgeterr());
exit(1);
}
if((handle=tjInitCompress())==NULL) {
printf("Could not initialize compressor: %s\n", tjGetErrorStr());
free(srcBuf);
exit(1);
}
if((tjCompress2(handle, srcBuf, width, 0, height, TJPF_RGB,
jpegBuf, &jpegsize, TJSAMP_444,10, 0))==-1) {
printf("Could not compress: %s\n", tjGetErrorStr());
free(&srcBuf);
tjDestroy(handle);
exit(1);
}
}
Проблема, которую я получаю от этого в том, что мне нужно решить extern "C"
код, я думаю:
error LNK2001: unresolved external symbol loadbmp
К сожалению, я не знаю, как сделать это, и как это ошибка чрезвычайно общие в мире C++, найти ответ для этого не так просто, как они могут отличаться.
Надеюсь, это довольно легко решить, так как я предполагаю, что я должен определить его или что-то в этом качестве, это внешний код.
раздел номер 7 от стандарта C++, если я правильно запоминание. – user2485710
Единственный переносимый тип возврата 'main()' is 'int'. –
Только общий совет: Литеральные строки * constant *, поэтому вы должны либо объявлять переменные, указывающие на литеральную строку, либо на 'const char * filename =" ... ";', либо как на массив, как в 'char filename [] = "..."; '. –