1

私は 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++ の世界では非常に一般的であるため、答えを見つけるのは簡単ではありません。

うまくいけば、これを外部コードとして定義する必要があると思うので、これを解決するのはかなり簡単です。

4

2 に答える 2

1

不足しているのは、.libファイルへのリンクです。多くの場合、すばやく簡単な方法は、この行をファイルの先頭に追加することです

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

于 2013-08-11T18:48:50.707 に答える