2

.dllをWindows/System32に、.libをVS / libに、.hをVS/includeに追加しました。

残っているのは、プロジェクトを介してリンクすることだけです。これは私が持っているものです:


#include <glfw.h>

int main(void)
{
    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    if (!glfwOpenWindow(640, 480, 8, 8, 8, 0, 24, 0, GLFW_WINDOW))
        return -1;

    /* Loop until the user closes the window */
    while (glfwGetWindowParam(GLFW_OPENED))
    {
        /* Render here */

        /* Swap front and back buffers and process events */
        glfwSwapBuffers();
    }

    return 0;
}

1>Main.obj : error LNK2019: unresolved external symbol _glfwSwapBuffers referenced in function _main
1>Main.obj : error LNK2019: unresolved external symbol _glfwGetWindowParam referenced in function _main
1>Main.obj : error LNK2019: unresolved external symbol _glfwOpenWindow referenced in function _main
1>Main.obj : error LNK2019: unresolved external symbol _glfwInit referenced in function _main
1>C:\Users\Danny\documents\visual studio 2010\Projects\OGL2\Debug\OGL2.exe : fatal error LNK1120: 4 unresolved externals

[プロジェクト]>[プロパティ]>[構成プロパティ]>[リンカー]に移動しました>[追加の依存関係]に以下を追加しました。


opengl32.lib;GLFW.lib;glu32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)

また、適切な方法として、[すべてのデフォルトライブラリを無視する]を[いいえ]に設定しました。

私はリンクすべきだったと知っています:opengl32.lib, GLFW.lib, glu32.lib, kernel32.lib and user32.lib

残念ながら、LNK2019の問題は解決していません。本当に理由はわかりません。すべての助けは大歓迎です。

4

2 に答える 2

10

外部名は、プロジェクトが 64 ビット ターゲット用にビルドされていることを示します (通常、32 ビット DLL エクスポートには@nn、stdcall 呼び出し規約で使用される接尾辞が付いています)。あなたのライブラリは 32​​ ビット ターゲット用にビルドされているに違いありません。

プロジェクト設定を x64 ではなく Win32 に変更します。

私の推測は間違っていました - のような未解決の外部シンボル_glfwSwapBuffersは、32 ビット ターゲット用にビルドしていることを示しています。64 ビット ターゲット用にビルドする場合、外部名はアンダースコアで装飾されません。

しかし、基本的な解決策は同じです - ビルドされているターゲットが、あなたが持っているライブラリのターゲットと同じであることを確認してください。そのため、64 ビットの GLFW ライブラリをダウンロードした場合は、VS プロジェクトが Win64 ターゲット用にビルドされていることを確認してください。

64 ビット GLFW バイナリ ディストリビューションを に抽出した後、テスト プログラムをコンパイルしてリンクすることができましたc:\temp

C:\temp>cl /I c:\temp\glfw-2.7.7.bin.WIN64\include\GL test.cpp c:\temp\glfw-2.7.7.bin.WIN64\lib-msvc110\GLFWDLL.lib
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

test.cpp
Microsoft (R) Incremental Linker Version 11.00.50727.1
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:test.exe
test.obj
c:\temp\glfw-2.7.7.bin.WIN64\lib-msvc110\GLFWDLL.lib

C:\temp>
于 2013-03-18T00:19:50.550 に答える