Несмотря на то, что я новичок в 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 ++, найти ответ на этот вопрос не так просто, поскольку они могут отличаться.
Надеюсь, это довольно легко решить, так как, я думаю, я должен определить это или что-то вроде внешнего кода.
Кажется, вы заявили loadbmp()
но вы не определили это. Где определена функция? Если это должно прийти из библиотеки, не делайте объявите эту функцию самостоятельно, а включите соответствующий заголовок. В документации по функции должно быть указано, какой заголовок уместен, и какие дополнительные библиотеки вам, возможно, потребуется включить.
Если loadbmp()
это не та функция, которую вы хотите взять из библиотеки, вам нужно определить (реализовать) ее.
Чего вам не хватает, так это ссылки на ваш .lib
файл. Часто быстрый и простой способ — добавить эту строку в начало файла.
#pragma comment(lib,"put_your_lib_filename_here.lib")