2010-02-15 6 views
3

Visual Studio 5.0을 사용합니다. DLL과 정적 라이브러리가 있습니다. 내 의도는 정적 라이브러리에 정의 된 정적 함수를 사용하는 것입니다. 의도 한 소스 cpp에 헤더 파일을 포함 시켰고 또한 프로젝트 종속성의 경로를 제공했습니다. 아직도 그것은 링커 오류를 제공합니다. 다음정적 라이브러리를 DLL에 연결

링커 오류

오류 LNK2019입니다 : 확인되지 않은 외부 기호 "공공 정적 부울 __cdecl GPH :: ISA (클래스 PtOnDemand &, wchar_t를 CONST *)"(사 @ GPH @@ SA_NAAVPtOnDemand @? }} \ ReleaseU/epptxml.dll : 함수에서 "private : int __thiscall PtXMLP :: HandleObjectBegin (char const *, char const * *)"참조 된 @ PB_W @ Z) 치명적인 오류 LNK1120 : 해결되지 않은 외부 1 개

제안 사항

+2

의 프로토 타입을 포장하여 완전히 엉망으로 이름을 사용하지 않도록 설정해야 할 수 있습니다. 그리고 Visual Studio 버전을 업데이트하는 데 필요한 모든 답변은 +1입니다. 영주님, 5.0은 고대입니다. – Tim

답변

3

다른 설정으로 컴파일 되었기 때문에 링커가 사용자의 기능을 찾지 못했을 수 있습니다. 릴리즈 vs 디버그와 마찬가지로 유니 코드 대 비 유니 코드, 호출 규칙의 차이. 이로 인해 이름이 다른 방식으로 엉망이 될 수 있습니다. .H 파일은 C로 작성되어있는 경우,하지의 C++, 당신은 아마 우리에게 메이크 파일/프로젝트 파일과 링커 오류를 표시해야

extern "C" 
    { 
    // function prototypes go here. 
    } 
+1

+1 : 다른 답변에 대한 Sameer의 의견에 따르면 거의 확실합니다. –

+0

+1, 위와 같이 주어진 함수는 유니 코드를 나타내는 wchar_t를 취합니다. 또한 IsA는 MFC에서 일반적인 IsKindOf 유형 함수처럼 들린다. (예 : RTTI 대용품) –

+0

Win32 응용 프로그램에서 cpprestsdk를 사용하고 있습니다. 라이브러리의 dll을 계속 찾고 있습니다 (cpprestsdk). 이 솔루션은 전혀 나를 위해 작동하지 않습니다. – Marss

0

우선 Visual Studio의 새로운 버전을 얻는 시간 :-) 하지만 레거시 지원에 사용할 가능성이 높습니다.

어쨌든 헤더 파일 만 포함하면 충분하지 않습니다. 또한 링커에게 정적 라이브러리 파일이 어디에 있는지 (아마도 .a 파일이어야 함) 알려주고 라이브러리의 이름이 무엇인지 확인해야합니다.

+0

@fuzz 이미 완료했습니다 –

1

글쎄, Visual Studio 5에 대해서는 정확히 알지 못합니다. 그러나 프로젝트에 추가 종속성으로 정적으로 링크하려는 라이브러리를 추가해야합니다.

+0

@simon 이미 완료했습니다 –

2

프로젝트를 링크하려면 프로젝트에 lib 파일을 포함시켜야합니다. VS5에 대해서는주의해야하지만 6에서는 프로젝트/프로젝트에 추가/파일 아래에 있습니다. 또는 프로젝트 속성의 링커 옵션에 포함시킬 수도 있습니다.

+0

@shane 이미 완료했습니다 –

+0

@Sameer, jdv의 답변을 조사해야하는 것 같습니다. _MBCS 및 UNICODE를 전 처리기 정의로 추가하는 효과를 살펴보십시오. –

관련 문제