Неразрешенные внешние и внешние "С"?

Как новый, как я 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
11 авг. '13 в 21:33
источник поделиться
2 ответов

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

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

2
11 авг. '13 в 21:41
источник

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

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

1
11 авг. '13 в 21:48
источник

Посмотрите другие вопросы по меткам или Задайте вопрос