Неразрешенные внешние и внешние «C»?

Несмотря на то, что я новичок в 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 ++, найти ответ на этот вопрос не так просто, поскольку они могут отличаться.

Надеюсь, это довольно легко решить, так как, я думаю, я должен определить это или что-то вроде внешнего кода.

0

Решение

Кажется, вы заявили loadbmp() но вы не определили это. Где определена функция? Если это должно прийти из библиотеки, не делайте объявите эту функцию самостоятельно, а включите соответствующий заголовок. В документации по функции должно быть указано, какой заголовок уместен, и какие дополнительные библиотеки вам, возможно, потребуется включить.

Если loadbmp() это не та функция, которую вы хотите взять из библиотеки, вам нужно определить (реализовать) ее.

2

Другие решения

Чего вам не хватает, так это ссылки на ваш .lib файл. Часто быстрый и простой способ — добавить эту строку в начало файла.

#pragma comment(lib,"put_your_lib_filename_here.lib")

1

По вопросам рекламы [email protected]