0

도와주세요, 얘들 아, 정말 오랜 시간을 찾고 있었어요.해결되지 않은 외부 기호

저는 Visual Studio 2010을 사용하고 있으며 외부 라이브러리를 포함하려고했지만 해결되지 않은 외부 오류가 발생했습니다.

외부 프로젝트는 내가 프로젝트의 lib 디렉토리 파일이 포함

backend.cpp 
//some functions 
frontend.cpp 
//some functions 
header.h 

내가 SCons는을 사용하여이 프로젝트를 빌드 다음과 같은 방법으로 파일로 구성되며, 해당 경로에 대해 참조하고 나는 .H 파일을 복사 to msvc 디렉토리.

VS 액세스하고 (자동 완성)에서 backend.cpp의 기능을 읽는 것 같다하지만이 프로젝트를 실행할 때 그것은

+1

프로젝트 설정의'추가 라이브러리'섹션에'lib'을 추가 했습니까? –

+0

추가 종속성에 추가했습니다. –

+1

정확한 오류 메시지는 링커가 누락 된 함수의 * complete * 함수 선언에도 유용합니다. –

답변

2

내가 비주얼 아니에요 호출 된 함수 @ 해결되지 않은 외부 있다는 것을 말한다 Studio 전문가,하지만 당신의 코드를 자동 완성 할 수 있다는 것은 소스 코드의 헤더를 찾는 것과 관련이 있다고 생각합니다.

해결되지 않은 외부는 컴파일 과정에서 컴파일러가 개체 파일을 찾을 수 없음을 의미합니다. 이것은 lib 파일을 올바르게 추가하지 못했거나 .cpp 파일이 누락되었다는 것을 의미 할 수 있습니다.

+0

은 프로젝트에 .cpp 파일을 추가해야하며, lib 및 .h 파일은 특히 .h 파일이 백엔드 파일과 프론트 엔드 파일 모두와 연결되기에 충분합니다. –

+0

아니요 .cpp 파일을 추가하지 않아도됩니다. .lib 파일을'Additional Dependencies'에 추가하기 만하면됩니다. '모든 구성 '에 대해 그렇게 했습니까? –

+0

완전한 오류 메시지를 제공하지 않아 일부 .cpp 파일이 누락 될 수 있음을 의미합니다. 어쩌면이 파일이 라이브러리와 관련이 없더라도 다른 파일 일 수도 있습니다. 그렇다고 생각하지는 않습니다. – ivarec

1

이는 여러 가지 이유로 발생할 수 있습니다. 그러나 이들 모두는 다음 중 하나가됩니다.

  • 올바른 .lib 파일을 연결하지 않았습니다.
  • 프로그램에서 사용중인 기호 이름이 .lib에 제공된 기호 이름과 동일하지 않습니다.

첫 번째 것은 확인하기가 쉽기 때문에 다시 확인하십시오.

두 번째 것은 더 까다 롭습니다. 프로그램에 사용 된 기호 이름은 "확인되지 않은 외부 기호 abc"등의 오류 메시지로 출력됩니다. 라이브러리에서 사용할 수있는 기호는 dumpbin /all name.lib 명령과 함께 나열 할 수 있습니다.

문제를 찾을 수없는 경우 정확한 오류 및 덤프 빈 프로그램의 출력을 게시하십시오.

+0

오류 LINK2019 : 함수 "private : void _thiscall Main :: on_donebutton_clicked (void)"에서 참조되는 확인할 수없는 외부 기호 "public : void_thiscall IStruct :: init (void)"(? init @ IStruct @ QAEXXZ) (? on_donebutton_clicked @ Main @@ AAEXXZ). –

+0

vs 명령 줄을 연 다음 .lib 파일의 디렉토리로 이동 한 다음 사용자가 제공 한 명령을 입력하고 출력은 lib가 저장된 방법에 대한 설명입니다. –

+0

'dump/all' 명령이 어떤 심볼이라도보고하면 라이브러리가 제대로 구축되지 않은 것일 수 있습니다. 당신은 scons 대신 수동으로 구축해야합니다. – rodrigo