簡體   English   中英

SFML鏈接器錯誤:無法解析的外部符號_WinMain @ 16,Visual Studio 2012

[英]SFML linker error: unresolved external symbol _WinMain@16, Visual Studio 2012

我能夠獲得教程#1進行編譯。 但是我無法編譯第二個

當您新建-> Project時, 這些設置之一可能會干擾嗎? 可以肯定,我沒有做空項目,否則沒有控制台。

怎么了? 編譯錯誤:

Error   1   error LNK2019: unresolved external symbol _WinMain@16 referenced in function
___tmainCRTStartup  C:\...\02-videomode-iterate\MSVCRTD.lib(crtexew.obj)    02-videomode-iterate
Error   2   error LNK1120: 1 unresolved externals   C:\...\Debug\02-videomode-iterate.exe   02-videomode-iterate

整個來源:

#include <SFML/Window.hpp>

int main()
{
    sf::Window App(sf::VideoMode(800, 600, 32), "SFML-tut: 02");

    bool Running = true;
    while (Running)
    {
        App.Display();
    }

    return EXIT_SUCCESS;
}

項目設置:

include dir,lib:dir設置正確。

C ++->預處理程序->預處理程序定義:

SFML_DYNAMIC

鏈接器->輸入

嘗試過: sfml-window.libsfml-window-d.lib (Visual Studio似乎總是在開始時使用調試模式?但是,教程#1僅在我不使用-d版本時有效。

子系統:

/子系統:WINDOWS

設置/SUBSYSTEM:WINDOWS標志時,鏈接器將查找WinMain函數而不是常規的main 您有兩種選擇:

  1. 更改為/SUBSYSTEM:CONSOLE 您將獲得一個煩人的(或可能有用的)控制台窗口,您可以使用FreeConsole擺脫FreeConsole
  2. 使用以下簽名將main更改為WinMain

     int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ); 

    除非您需要訪問argcargv ,否則此更改不會引起太多麻煩。


編輯:也許這也值得一看(從第二篇教程中復制):

在Windows操作系統下,您可能已經創建了“ Windows應用程序”項目,尤其是在不想顯示控制台的情況下。 在這種情況下,為避免用WinMain替換main,可以與SFML_Main靜態庫鏈接,並保留一個標准且可移植的main入口點。

因此,我想歸結為將sfml-main.lib (或類似文件)添加到要鏈接的庫列表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM