VS 自动链接 Windows 上随 vcpkg 安装的 SDL2 库

Fra*_*une 6 c++ sdl visual-studio sdl-2 vcpkg

据我所知,这与现有问题并不重复。这个问题专门涉及 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 来定位它。

Umb*_*bra 7

在 VS 中使用 vcpkg 时链接 SDL2 手动链接库

我的回答是@HolyBlackCat 的后续回答,感谢您的帮助。

在您的情况下,目录是x64-windows,默认情况下是x86-windows

Right-click on your project -> Properties -> Configuration Properties


第一步

去:VC++ Directories -> Library Directories

对于Debug配置,添加:

$(VCPKG_ROOT)\installed\x64-windows\debug\lib\manual-link
Run Code Online (Sandbox Code Playgroud)

对于Release配置,添加:

$(VCPKG_ROOT)\installed\x64-windows\lib\manual-link
Run Code Online (Sandbox Code Playgroud)

第二步

去:Linker -> Input -> Additional Dependencies

对于Debug配置,添加:

SDL2maind.lib
Run Code Online (Sandbox Code Playgroud)

对于Release配置,添加:

SDL2main.lib
Run Code Online (Sandbox Code Playgroud)

现在您不应该被“main() 重新定义”错误所困扰。


Hol*_*Cat 4

这似乎是创建该软件包的人经过深思熟虑的决定。

如果您查看包描述文件,您可以看到它SDL2main.lib正在被移动到manual-link目录中。我不熟悉vcpkg,所以我不知道你到底如何“手动链接”它,但我认为这是可能的。