2

Visual Studio 2010 Express で OpenGL を使用して、C++ で 2D サイド スクローラーを作成しています。コードをコンパイルしようとすると、正しくビルドされますが、main() 関数で初期化している GLFW 関数でリンカー エラーが発生します。これが私のコードです:

#include <iostream>
#include <ctime>


#include <GL\glfw.h>


#include "Player.h"


void render();
void update();


Player Player1;
 //Cross platform sleep implementation
void _sleep(double ms)
{
    double st = clock();
    if(ms <= 0)
            ms = 10;
    while(clock() < (ms + st));
}

int main(int argc, char** argv)
{
    std::cout <<"Loading Prized Fighter"<< std::endl;
    glfwInit(); //Initialize GLFW

    //Create GLFW window
    if(glfwOpenWindow(800, 600, 5, 6, 5, 0, 8, 0, GLFW_WINDOW) != GL_TRUE)
        std::cout << "Error creating window!" << std::endl;

    //Set window title
    glfwSetWindowTitle("Prized Fighter");

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    //Start main game loop
    //This calls the functions which update objects and render them to the screen
    while(true)
    {
        update();
        render();

        glfwSwapBuffers(); //Switch buffers (double rendering)
        _sleep(10.0); //Let a bit of CPU time for other processes
    }

    return 0;
}

/*
     - Render function -
      Used to draw objects to the screen
*/
void render()
{
     glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //Color to clear the screen
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

     //TODO: Draw stuff here
     Player1.draw();
}

/*
     - Update function -
     Updates objects; states, locations, etc
*/
void update()
{
     //TODO: Update objects here
     Player1.update();
}

コンパイルすると、次のエラーが発生します。

1>------ ビルド開始: プロジェクト: プライズ ファイター、構成: Win32 のデバッグ ------ 1>main.obj: エラー LNK2019: 未解決の外部シンボル _glfwSwapBuffers が >function _WinMain@8 で参照されています

1>main.obj : エラー LNK2019: >関数 _WinMain@8 で参照されている未解決の外部シンボル _glfwSetWindowTitle

1>main.obj : エラー LNK2019: >関数 _WinMain@8 で参照されている未解決の外部シンボル _glfwOpenWindow

1>main.obj : エラー LNK2019: 関数で参照されている未解決の外部シンボル _glfwInit >_WinMain@8

1>MSVCRTD.lib(crtexew.obj): エラー LNK2019: 未解決の外部シンボルWinMain@16 >関数で参照 _ _tmainCRTStartup

1>c:\users\brennan\documents\visual studio 2010\Projects\Prized Fighter\Debug\Prized >Fighter.exe: 致命的なエラー LNK1120: 5 未解決の外部情報 ========== ビルド: 0 成功、 1 失敗、0 最新、0 スキップ ==========

リンク中に何が問題になっていますか - コードにエラーがありますか?

4

4 に答える 4

1

リンクする必要があるようです:

glfw.lib 
opengl32.lib

リリース ノートを読む価値があります:こちら

于 2012-11-28T00:57:54.033 に答える
0

GFWL ライブラリにリンクしていないか、正しくリンクしていないため、これらのエラーが発生しています。そのライブラリには、呼び出そうとしている関数の定義が含まれています。

GFWL readme ファイルのセクション 4.2 では、リンク時に使用するライブラリについて説明しています。静的にリンクしている場合 (そうであるように見えます)、または DLL を使用している場合は、必要な手順が異なります。

于 2012-11-28T01:00:47.600 に答える
0

私が知る限り、設定ですべてが正しくリンクされていましたが、それでも何らかの理由で、Visual Studio 2017 には私のソリューションにlady.cが含まれていませんでした。フォルダーにドロップされても、ソリューション ビューではなくフォルダー ビューを選択した場合にのみ表示されます。

最終的に、プリプロセッサ ステートメントの後に #include "glad.c" と入力したところ、うまくいきました。

于 2019-12-06T20:05:34.507 に答える