【问题标题】:VS auto-linking against SDL2 libraries installed with vcpkg on WindowsVS 自动链接在 Windows 上使用 vcpkg 安装的 SDL2 库
【发布时间】:2020-09-26 15:04:31
【问题描述】:

据我所知,这不是现有问题的重复。这个问题专门针对 Visual Studio 的自动链接 SDL2 库。

我已经用vcpkg 安装了 SDL2(x64-windows 变体):

vcpkg install sdl2 --triplet x64-windows

我已经为 Visual Studio 提供了 vpkg 库:

vcpkg integrate install

我的 VS 2019 项目配置为使用Console 子系统,我的主程序如下所示:

#define SDL_MAIN_HANDLED
#include <SDL2/SDL.h>

int main(int, char*[])
{
}

为什么我需要指定SDL_MAIN_HANDLED?与SDLmain2.lib 的自动链接似乎由于某种原因没有发生?

如果我不指定SDL_MAIN_HANDLED,则链接失败:

unresolved external symbol main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)

我也尝试在main() 声明中添加extern "C",但无济于事。

我用 SDL2 编写了很多应用程序,但这是我第一次使用 vcpkg 来定位它。

【问题讨论】:

  • 嗨@S.M.,我知道这篇文章,但它没有回答我的问题。
  • 它回答了“为什么我需要指定 SDL_MAIN_HANDLED?”这个问题,不是吗?
  • 确实如此,但在不同的上下文中。我确切地知道SDL_MAIN_HANDLED 的作用和用途;我想不通的是为什么我需要在特定的上下文中使用它,以及是否有更好的方法来做事。

标签: c++ visual-studio sdl sdl-2 vcpkg


【解决方案1】:

这似乎是包的创建者深思熟虑的决定。

如果您查看the package description file,您可以看到SDL2main.lib 正在被移动到manual-link 目录中。我对vcpkg 不熟悉,所以我不知道您如何“手动链接”它,但我认为这是可能的。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2022-01-12
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 2020-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多