0

QtCreator と CMake は初めてで、次の設定で「未解決の外部シンボル」が表示される理由がわかりません。

ここに画像の説明を入力

私は何が欠けていますか?

編集:

@ixSci Find_package(opengl) はありますが、必要ないと思います..これは私が今持っているよりクリーンなcmakelistです:

project(test)
cmake_minimum_required(VERSION 2.8)

aux_source_directory(. SRC_LIST)

include_directories(../../glfw/glfw-2.7.7/include)    
link_directories(../../glfw/glfw-2.7.7/lib-msvc110)

add_executable(${PROJECT_NAME} ${SRC_LIST})

target_link_libraries(${PROJECT_NAME} opengl32 glfw)

ありがとう。

4

3 に答える 3

0

bash.dによって提案されました私は使用してみました:

target_link_libraries(${PROJECT_NAME} glfwdll)

しかし、私はこのエラーを受け取りました:

E:\ opengl \ test\test.exeを開始しています...プログラムが予期せず終了しました。E:\ opengl \ test\test.exeがコード-1073741515で終了しました

だから私は使ってみました:

target_link_libraries(${PROJECT_NAME} glfw)

しかし、今回は削除しましたが#define GLFW_DLL、機能しました。

理由はわかりません。

誰かがglfwdll.libを適切に使用する方法と、なぜ私がそれを使用できなかったのかを説明できれば、それは素晴らしいことです。

みんな、ありがとう。

于 2013-02-27T17:09:02.120 に答える
0

GLFW は OpenGL 用のオープン ソース ライブラリのようです。だからあなたはそれを使って見つけようとしていますfind_package(opengl)が、それは間違っています。GLFW は OpenGL の一部ではありません。たとえば、cmake 用の 3rdpart GLFW ファインダーをダウンロードするなど、他のアプローチを適用する必要があります。私が見つけたものそれをダウンロードして、どこかに保存し (ソース ツリーなど)、このパスをSET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "YOUR_PATH_GOES_HERE")cmake ファイルの先頭に追加する必要があります。あなたがそれをした後、あなたはあなたの中FIND_PACKAGE(GLFW REQUIRED)で使用${GLFW_LIBRARY}して使用することができますtarget_link_libraries

于 2013-02-25T10:29:30.300 に答える
0

静的リンクと動的リンクを混在させているようです。これらのいずれかを使用することを選択する必要があります。

使用するtarget_link_libraries(${PROJECT_NAME} glfwdll)場合、動的リンクを使用しています。つまり、ライブラリの dll バージョンに対してリンクしています。その場合、プログラムを実行できるように、ビルドされた実行可能ファイルと同じフォルダーに GLFW.dll ファイルを配置する必要があります。また、ライブラリの dll バージョンを使用するには、フラグをGLFW_DLL定義する必要があるようです。add_definitions(-DGLFW_DLL)ソースファイルに入れるよりも、CMake で定義したほうがよいでしょう。

静的リンクは扱いが簡単です。使用するだけtarget_link_libraries(${PROJECT_NAME} glfw)です。ファイルGLFWDLL.libGLFW.dll.

したがって、動的リンクを使用すると、CMakeLists.txt次のようになります (#define GLFW_DLLソース ファイルから を削除します)。

cmake_minimum_required(VERSION 2.8)
project(test)

aux_source_directory(. SRC_LIST)
include_directories(../../glfw/glfw-2.7.7/include)    
link_directories(../../glfw/glfw-2.7.7/lib-msvc110)

add_definitions(-DGLFW_DLL)
add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${PROJECT_NAME} opengl32 glfwdll)

静的リンクに変更する場合は、最後の 3 行を次のように変更します。

#add_definitions(-DGLFW_DLL)
add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${PROJECT_NAME} opengl32 glfw)

それが役に立てば幸い!上記のコードはすべてテストされていません:-)

于 2013-02-28T05:53:52.050 に答える