2013-03-30 4 views
0

this manual을 사용하여 컴퓨터에서 컴파일하기 위해 Freeglut OpenGL 응용 프로그램을 가져 오려고했습니다.수정 LNK2019 : freeglut으로 해결되지 않은 외부 기호

  • 복사 된 파일 freeglut 아카이브에서 MS에 프로그램 파일을 명시 적으로 라이브러리에있는 freeglut.lib 경로는

을 폴더 그러나 모든 소요

  • 세트
  • 추가 종속성에
  • 지정 freeglut.lib 폴더 : 이것은 내가 의미 효과 없음. 는 C++ 헤더 파일 바로 찾았지만 라이브러리되지 않습니다 - 그래서 나는 이러한 오류를 얻을 : 그래서 내 질문에

    1>OpenglTest.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _wmain 
    1>OpenglTest.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _wmain 
    1>OpenglTest.obj : error LNK2019: unresolved external symbol "void __cdecl specialKeys(int,int,int)" ([email protected]@[email protected]) referenced in function _wmain 
    1>OpenglTest.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _wmain 
    1>OpenglTest.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _wmain 
    1>OpenglTest.obj : error LNK2019: unresolved external symbol [email protected] referenced in function [email protected] 
    1>OpenglTest.obj : error LNK2019: unresolved external symbol [email protected] referenced in function [email protected] 
    1>OpenglTest.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "void __cdecl display(void)" ([email protected]@YAXXZ) 
    

    을 :

    1. 당신이 잘못 될 수 있습니다 무엇을 추측 할 수? (쉬운 일은 아니지만이 사실을 분명히 알 수는 없습니다)
    2. Google에서 찾지 못했지만 다른 설명서가 있습니까?
    3. 다운로드해야하는 다른 아카이브가 있습니까?

    내 C++ 코드는 from here입니다. 모든 기능은 freeglut 헤더 파일에서 찾을 수 있습니다. 그냥 도서관이 없습니다.

  • 답변

    1

    이것은 연결 문제로 C vs C++처럼 보입니다. 에서 C source 코드를 C++ code으로 컴파일 중입니다 (아마도 확장자가이고 컴파일러가 C++이라고 가정).

    C++에서 함수 이름을 변경합니다. 예를 들어 [email protected]은 소스 코드에서 glutMainLoop을 호출 할 가능성이 가장 높습니다.

    라이브러리는 C 코드에서 가져온 것이어야합니다. 따라서 함수의 버전을 glutMainLoop으로 간단히 표시합니다. 그래서 그것이 발견되지 않는 이유입니다.

    해결 방법은 코드를 C 코드로 컴파일하거나 extern "C"을 사용하는 것입니다.

    편집 : 일부 C/C++ 링키지 문제를 다루는 방법에 대한 링크 (의견에서 이동 됨).

    +0

    은'통근 "C"는 '라이브러리에서 C 함수 defenitions 배치 될? –

    +0

    당신의 경우에는 C로 코드를 컴파일해야한다고 생각합니다. 코드에 C++ 기능이 필요 없다고 가정합니다. 그러나 우리 자신의 코드에 C++을 사용해야하는 경우 extern에서 사용하는 함수를 래핑해야합니다. 이것을하는 방법을보십시오. http://www.thegeekstuff.com/2013/01/mix-c-and-cpp/ –

    +0

    첫 번째 예가 귀하의 경우입니다. –

    관련 문제