내 라이브러리를 명시 적으로 호출해야하는 이유는 무엇입니까?

트리스탄 두베

OpenGL 튜토리얼을 따르고 있으며 GLEW를 사용하여 FPS 카운터를 설정하는 마지막 단계입니다. #pragma comment(lib, "glew32sd.lib")라이브러리를 성공적으로 연결 하기 위해 사용해야하는 문제가있었습니다 . freeglut의 경우 명시 적으로 참조 할 필요가 없었습니다.

내 구조는 간단합니다.

 library\
    dll\
      freeglut.dll
      glew32d.dll
    include\
      GL\
        freeglut.h
        freeglut_ext.h
        freeglut_std.h
        glew.h
        glut.h
        glxew.h
        wglew.h
    lib\
      freeglut.lib
      glew32d.lib
      glew32sd.lib

include \ dir을 포함하고 lib에서 추가 라이브러리를 찾도록 Visual Studio를 설정했습니다. dll 폴더는 빌드 후 작업을 통해 출력에 복사하도록 설정됩니다. 지금까지는 freeglut로 모든 것이 잘 되었기 때문에 작동한다고 확신합니다. glew 만 작동하지 않습니다.

어떻게 비주얼 스튜디오는 하지 링크 glew 수 있지만 freeglut와 함께 일하고있다? 그들은 같은 디렉토리에 있습니다. 나는 freeglut가 링커의 출력에서 ​​볼 수 있기 때문에 링크되고 있음을 알 수 1> Processed /DEFAULTLIB:freeglut.lib있습니다. 두 라이브러리 모두 내 컴퓨터에서 컴파일됩니다.

GLEW를 정적 라이브러리로 컴파일하려고했기 때문에 컴파일러가 .dll을로드하지 않는다고 가정하므로 제거하는 것이 좋습니다. 그러나 두 경우 모두 작동하지 않습니다. 나는 #define GLEW_STATIC및을 사용해 보았지만 #define GLEW_BUILD링크하지 않을 것입니다.

그런 다음 SO에 대한 답변을 우연히 발견하고 그렇게하면 #pragma comment(lib, "glew32sd.lib")내 라이브러리가 올바르게로드 된다는 것을 알았 습니다. 이제 링커에게이 .lib를 사용하도록 명시 적으로 지시하면 작동한다고 가정합니다. 그런데 왜 freeglut가 자동으로로드됩니까? 나는 그것을 어디에서나 직접 참조하지 않습니다.

지금 내 코드가 작동하고 있지만 궁금합니다. 저는 새로운 C ++ 개발자이고 정적 라이브러리와 동적 라이브러리의 개념은 여전히 ​​제 생각에 너무 신선합니다.

은퇴 한 닌자

pragma를 통해 또는 프로젝트 속성의 프로젝트-> 링커-> 입력-> 추가 종속성 영역에서 사용하는 라이브러리를 링커에 알려야합니다.

freeglut의 경우 freeglut_std.h명시 적으로를 정의하지 않는 한 pragma가 제공 FREEGLUT_LIB_PRAGMAS됩니다 0. 그렇게했다면 자체 pragma를 통해 또는 추가 종속성 영역에서 종속성을 수동으로 추가해야합니다.

일반적으로 필요한 종속성을 추가하는 것은 사용자에게 달려 있습니다. 내 경험상 도서관에서 자동으로 시도하는 경우는 드뭅니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

라이브러리를 정적 / 공유 라이브러리가 아닌 내 앱 소스의 일부로 CMake 컴파일하는 방법은 무엇입니까?

분류에서Dev

여기에 생성자를 명시 적으로 작성해야하는 이유는 무엇입니까?

분류에서Dev

Kotlin이 속성에 대해 getter 및 setter를 암시 적으로 호출하는 이유는 무엇입니까?

분류에서Dev

Gradle 2.2.1로 내 항아리에 공유 라이브러리를 추가하는 방법은 무엇입니까?

분류에서Dev

내 프로그램이 사용시 인수 ([-d?] 및 [-d | --data])를 두 번 출력하는 이유는 무엇입니까? (옵션 구문 분석을 위해 popt 라이브러리를 사용하고 있습니다)

분류에서Dev

Ivy로 컴파일 된 라이브러리를 게시하면 안되는 이유는 무엇입니까?

분류에서Dev

lua gc를 명시 적으로 호출하는 방법은 무엇입니까?

분류에서Dev

함수 내부에 명시 적 생성자가있는 정적 객체 선언으로 인해 코드가 끊어지는 이유는 무엇입니까?

분류에서Dev

스칼라 2.13에서 때때로 명시 적으로 유형 클래스를 호출하는 것이 불가능한 이유는 무엇입니까?

분류에서Dev

macOS : 내 앱이 동적으로 링크되는 경우 시스템 라이브러리를 제공해야합니까?

분류에서Dev

이 코드의 C에서 내 오류는 무엇입니까? FILE 처리 및 BST를 사용해야하는 라이브러리 카탈로그입니다.

분류에서Dev

내가 명시 적으로 하나만 추가 했음에도 FFmpeg가 내 파일에 두 번째 자막을 추가하는 이유는 무엇입니까?

분류에서Dev

라이브러리 내에서 "여기에서 명령 창을 열"수없는 이유는 무엇입니까?

분류에서Dev

생성자가 명시 적으로 호출 될 때 반환 유형이 없는데 임시 객체를 반환하는 이유는 무엇입니까?

분류에서Dev

Python3 요청 라이브러리가 0 대신 게시 요청으로 실제 Content-Length를 보내는 방법은 무엇입니까?

분류에서Dev

내 ListAdapter가 항목을 주기적으로 표시하는 이유는 무엇입니까?

분류에서Dev

React 개발 도구에 내 구성 요소가 익명으로 표시되는 이유는 무엇입니까?

분류에서Dev

내장 된 쉘을 명시 적으로 호출하는 방법은 무엇입니까?

분류에서Dev

"./configure"를 실행할 때 "./"로 현재 디렉토리를 명시 적으로 지정해야하는 이유는 무엇입니까?

분류에서Dev

scons '프로그램'명령에서 'LIBS'를 사용하여 정적 라이브러리를 찾지 못했습니다. 이유는 무엇입니까?

분류에서Dev

React에서 라이브러리를 전역 적으로 공유하는 방법은 무엇입니까?

분류에서Dev

마운트하는 동안 파일 시스템 유형을 명시 적으로 언급해야하는 이유는 무엇입니까?

분류에서Dev

내 GNU에서 Makefile이 내 라이브러리를 두 번 빌드하는 이유는 무엇입니까?

분류에서Dev

참조를 사용하는 대신 수정하기 위해 속성을 명시 적으로 참조해야하는 이유는 무엇입니까?

분류에서Dev

C # 명시 적 구현에서 'this'를 인터페이스 유형으로 캐스팅해야하는 이유는 무엇입니까?

분류에서Dev

빌드 후 이벤트로 tlbexp 명령을 호출하여 Visual Studio 2019 IDE의 C # EXE에서 형식 라이브러리를 내보내는 방법은 무엇입니까?

분류에서Dev

내 브라우저 만 인터넷에서 일시적으로 분리하는 방법은 무엇입니까?

분류에서Dev

`exec ()`또는`show ()`를 명시 적으로 호출하지 않고 QProgressDialog가 표시되는 이유는 무엇입니까?

분류에서Dev

Ruby에서 배열 통합 연산자 | =를 사용할 때 접근 자에 대해 명시 적으로 self를 호출해야하는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    라이브러리를 정적 / 공유 라이브러리가 아닌 내 앱 소스의 일부로 CMake 컴파일하는 방법은 무엇입니까?

  2. 2

    여기에 생성자를 명시 적으로 작성해야하는 이유는 무엇입니까?

  3. 3

    Kotlin이 속성에 대해 getter 및 setter를 암시 적으로 호출하는 이유는 무엇입니까?

  4. 4

    Gradle 2.2.1로 내 항아리에 공유 라이브러리를 추가하는 방법은 무엇입니까?

  5. 5

    내 프로그램이 사용시 인수 ([-d?] 및 [-d | --data])를 두 번 출력하는 이유는 무엇입니까? (옵션 구문 분석을 위해 popt 라이브러리를 사용하고 있습니다)

  6. 6

    Ivy로 컴파일 된 라이브러리를 게시하면 안되는 이유는 무엇입니까?

  7. 7

    lua gc를 명시 적으로 호출하는 방법은 무엇입니까?

  8. 8

    함수 내부에 명시 적 생성자가있는 정적 객체 선언으로 인해 코드가 끊어지는 이유는 무엇입니까?

  9. 9

    스칼라 2.13에서 때때로 명시 적으로 유형 클래스를 호출하는 것이 불가능한 이유는 무엇입니까?

  10. 10

    macOS : 내 앱이 동적으로 링크되는 경우 시스템 라이브러리를 제공해야합니까?

  11. 11

    이 코드의 C에서 내 오류는 무엇입니까? FILE 처리 및 BST를 사용해야하는 라이브러리 카탈로그입니다.

  12. 12

    내가 명시 적으로 하나만 추가 했음에도 FFmpeg가 내 파일에 두 번째 자막을 추가하는 이유는 무엇입니까?

  13. 13

    라이브러리 내에서 "여기에서 명령 창을 열"수없는 이유는 무엇입니까?

  14. 14

    생성자가 명시 적으로 호출 될 때 반환 유형이 없는데 임시 객체를 반환하는 이유는 무엇입니까?

  15. 15

    Python3 요청 라이브러리가 0 대신 게시 요청으로 실제 Content-Length를 보내는 방법은 무엇입니까?

  16. 16

    내 ListAdapter가 항목을 주기적으로 표시하는 이유는 무엇입니까?

  17. 17

    React 개발 도구에 내 구성 요소가 익명으로 표시되는 이유는 무엇입니까?

  18. 18

    내장 된 쉘을 명시 적으로 호출하는 방법은 무엇입니까?

  19. 19

    "./configure"를 실행할 때 "./"로 현재 디렉토리를 명시 적으로 지정해야하는 이유는 무엇입니까?

  20. 20

    scons '프로그램'명령에서 'LIBS'를 사용하여 정적 라이브러리를 찾지 못했습니다. 이유는 무엇입니까?

  21. 21

    React에서 라이브러리를 전역 적으로 공유하는 방법은 무엇입니까?

  22. 22

    마운트하는 동안 파일 시스템 유형을 명시 적으로 언급해야하는 이유는 무엇입니까?

  23. 23

    내 GNU에서 Makefile이 내 라이브러리를 두 번 빌드하는 이유는 무엇입니까?

  24. 24

    참조를 사용하는 대신 수정하기 위해 속성을 명시 적으로 참조해야하는 이유는 무엇입니까?

  25. 25

    C # 명시 적 구현에서 'this'를 인터페이스 유형으로 캐스팅해야하는 이유는 무엇입니까?

  26. 26

    빌드 후 이벤트로 tlbexp 명령을 호출하여 Visual Studio 2019 IDE의 C # EXE에서 형식 라이브러리를 내보내는 방법은 무엇입니까?

  27. 27

    내 브라우저 만 인터넷에서 일시적으로 분리하는 방법은 무엇입니까?

  28. 28

    `exec ()`또는`show ()`를 명시 적으로 호출하지 않고 QProgressDialog가 표시되는 이유는 무엇입니까?

  29. 29

    Ruby에서 배열 통합 연산자 | =를 사용할 때 접근 자에 대해 명시 적으로 self를 호출해야하는 이유는 무엇입니까?

뜨겁다태그

보관