2010-04-04 10 views
1

libjpeg 기능에 대해 해결되지 않은 외부 기호 오류를 생성하는 MSVC 2008을 사용하는 libjpeg LIB와 연결하려고하는 DLL이 있습니다. 나 또한 정확한 libjpeg 라이브러리 파일과 링크로 오류없이 테스트 프로젝트를 실행하고 잘 실행됩니다.MSVC 2008 - EXIB 프로젝트가 아닌 DLL 만있는 LIB의 외부 오류 미비

내 LIB 경로 및 종속 LIBS 목록 설정을 세 번 확인하고 그대로 EXE 프로젝트에서 DLL 프로젝트로 붙여 넣었습니다. 나는 여전히 오류가 발생합니다. 나는 extern "C"로 둘러싸인 libjpeg include 헤더를 가지고 있습니다. 그래서 그것은 이름을 맹 글링하는 문제가 아니며, 해결되지 않은 외부 경고는 장식되지 않은 libjpeg 함수를 보여줍니다 (단지 밑줄과 @ 기호 매개 변수 바이트 수 접미사가 각각 이름).

DLL 프로젝트와 링커가 테스트 EXE 프로젝트에 전혀 문제가 없을 때 기능을 제대로 찾을 수 없도록 만들 수있는 방법은 무엇입니까? 나는 ClanLib에서 다운로드 한 미리 컴파일 된 32 비트 정적 멀티 스레드 디버그 라이브러리를 사용하고 있습니다.

감사합니다, 로버트

답변

1

많은 실험 후 나는 해결책을 찾아 냈다. 문제는 DLL 및 LIB 프로젝트에서 사용하는 호출 규칙의 차이로 인한 것입니다 (MSVC 2008에서는이 속성이 프로젝트 속성, "구성 속성 -> C/C++ -> 고급"설정에서 설정됩니다.) DLL 프로젝트가 __stdcall로 설정되었고 LIB가 __cdecl이었습니다 .LIBJPEG을 __stdcall과 함께 다시 컴파일하면 문제가 해결되었습니다.