我正在尝试构建一些开源库.我需要包管理系统来轻松下载依赖项.起初我正在使用MinGW+MSYS.但包含的包裹有限.有人告诉我使用MinGW-w64 + MSYS2.
我mingw-w64-install从这里下载了.运行时,它会报告以下错误.怎么解决?

顺便说一句,从MinGW-w64下载页面,我看到了很多下载链接.甚至Cygwin也被列入名单.怎么Cygwin和MinGW-w64相关?

我目前的理解是,到目前为止MinGW+MSYS,MSYS只是MinGW的一个很好的插件,而在MinGW-w64 + MSYS2,MSYS2是独立的,MinGW-W64只是一组可以使用的库.就像Cygwin可以下载许多不同的包装一样.
据我所知,这与现有问题并不重复。这个问题专门涉及 Visual Studio 的自动链接 SDL2 库。
我已经使用vcpkgx64-windows安装了 SDL2 (变体):
vcpkg install sdl2 --triplet x64-windows
Run Code Online (Sandbox Code Playgroud)
我已经为 Visual Studio 提供了 vpkg 库:
vcpkg integrate install
Run Code Online (Sandbox Code Playgroud)
我的 VS 2019 项目配置为使用该Console子系统,我的主程序如下所示:
vcpkg install sdl2 --triplet x64-windows
Run Code Online (Sandbox Code Playgroud)
为什么我需要指定SDL_MAIN_HANDLED?似乎由于SDLmain2.lib某种原因没有发生自动链接?
如果我不指定SDL_MAIN_HANDLED,链接将失败:
vcpkg integrate install
Run Code Online (Sandbox Code Playgroud)
我也尝试过添加extern "C"声明main()但无济于事。
我已经用 SDL2 编写了很多应用程序,但这是我第一次使用 vcpkg 来定位它。
我在运行以下程序时遇到困难:
#include <string>
#include <iostream>
using namespace std;
int main()
{
cout << "First line.";
string s = "Hello World";
cout << " After string.";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它编译得很好,但运行时不产生任何输出。
如果我注释掉该string s = "Hello World";行,则程序将按First Line. After string.预期运行并输出。
似乎每当我尝试声明一个字符串时,程序都会停止。当字符串位于未调用的函数内部时,也会发生这种情况。
我正在 Windows 上的 VSCode 中构建程序,我的编译器和版本是:g++ (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project) 8.1.0