![](/img/trans.png)
[英]Using OpenGL in Visual Studio 2010 - error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
[英]SFML linker error: unresolved external symbol _WinMain@16, Visual Studio 2012
當您新建-> 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.lib
和sfml-window-d.lib
(Visual Studio似乎總是在開始時使用調試模式?但是,教程#1僅在我不使用-d版本時有效。
子系統:
/子系統:WINDOWS
設置/SUBSYSTEM:WINDOWS
標志時,鏈接器將查找WinMain
函數而不是常規的main
。 您有兩種選擇:
/SUBSYSTEM:CONSOLE
。 您將獲得一個煩人的(或可能有用的)控制台窗口,您可以使用FreeConsole
擺脫FreeConsole
。 使用以下簽名將main
更改為WinMain
:
int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow );
除非您需要訪問argc
和argv
,否則此更改不會引起太多麻煩。
編輯:也許這也值得一看(從第二篇教程中復制):
在Windows操作系統下,您可能已經創建了“ Windows應用程序”項目,尤其是在不想顯示控制台的情況下。 在這種情況下,為避免用WinMain替換main,可以與SFML_Main靜態庫鏈接,並保留一個標准且可移植的main入口點。
因此,我想歸結為將sfml-main.lib
(或類似文件)添加到要鏈接的庫列表中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.