Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ SFML链接器错误:未解析的外部符号_WinMain@16,Visual Studio 2012_C++_Linker_Visual Studio 2012_Sfml - Fatal编程技术网

C++ SFML链接器错误:未解析的外部符号_WinMain@16,Visual Studio 2012

C++ SFML链接器错误:未解析的外部符号_WinMain@16,Visual Studio 2012,c++,linker,visual-studio-2012,sfml,C++,Linker,Visual Studio 2012,Sfml,我能够很好地进行编译。但我无法编译 当您执行new->Project时,这些设置中的一个可能会产生干扰?很确定我做了一个空的项目,否则控制台 怎么了? 编译错误: Error 1 error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup C:\...\02-videomode-iterate\MSVCRTD.lib(crtexew.obj) 02-

我能够很好地进行编译。但我无法编译

当您执行new->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;
}
#包括
int main()
{
sf::窗口应用程序(sf::视频模式(80060032),“SFMLTUT:02”);
bool Running=true;
(跑步时)
{
App.Display();
}
返回退出成功;
}
项目设置:

include dir,lib:dir设置正确

c++->预处理器->预处理器定义:

SFML_动态

链接器->输入

已尝试:
sfml window.lib
sfml-window-d.lib
(visual studio似乎总是在开始时使用调试模式?但教程#1仅在我未使用-d版本时才起作用

子系统:

/子系统:WINDOWS


设置
/SUBSYSTEM:WINDOWS
标志时,链接器将查找
WinMain
函数,而不是传统的
main
。您有两个选项:

  • 更改为
    /SUBSYSTEM:CONSOLE
    。您将获得一个恼人的(或可能有用的)控制台窗口,您可以使用
    免费控制台
    摆脱该窗口
  • 使用以下签名将
    main
    更改为
    WinMain

    int CALLBACK WinMain(
     HINSTANCE hInstance,
     HINSTANCE hPrevInstance,
     LPSTR lpCmdLine,
     int nCmdShow
    );
    
    除非您需要访问
    argc
    argv
    ,否则此更改不会引起太多麻烦


  • 编辑:也许这也值得一看(复制自第二个教程):

    在Windows操作系统下,您可能已经创建了“Windows “应用程序”项目,尤其是不想显示控制台的情况下。 在这种情况下,为了避免用WinMain替换main,您可以链接 SFML_主静态库,并保留一个标准的便携式主条目 重点


    因此,我假设这归结为将
    sfml main.lib
    (或类似)添加到要链接的库列表中。

    当您设置
    /SUBSYSTEM:WINDOWS
    标志时,链接器将查找
    WinMain
    函数,而不是传统的
    main
    。您有两个选项:

  • 更改为
    /SUBSYSTEM:CONSOLE
    。您将获得一个恼人的(或可能有用的)控制台窗口,您可以使用
    免费控制台
    摆脱该窗口
  • 使用以下签名将
    main
    更改为
    WinMain

    int CALLBACK WinMain(
     HINSTANCE hInstance,
     HINSTANCE hPrevInstance,
     LPSTR lpCmdLine,
     int nCmdShow
    );
    
    除非您需要访问
    argc
    argv
    ,否则此更改不会引起太多麻烦


  • 编辑:也许这也值得一看(复制自第二个教程):

    在Windows操作系统下,您可能已经创建了“Windows “应用程序”项目,尤其是不想显示控制台的情况下。 在这种情况下,为了避免用WinMain替换main,您可以链接 SFML_主静态库,并保留一个标准的便携式主条目 重点

    因此,我认为这归结为向要链接的库列表中添加
    sfmlmain.lib
    (或类似内容)