【问题标题】:How does Auto-Linking libraries in C++ work?C++ 中的自动链接库如何工作?
【发布时间】:2015-10-08 06:51:08
【问题描述】:

我正在尝试自动链接以下库。我从来没有使用过自动链接功能,也不知道它是如何工作的。根据我的研究,这应该有效。除了 SDL 库之外,当我将 dll 包含到项目中时,我收到以下错误: https://i.gyazo.com/e49a636ddad428fa48acdee78c930293.png

让自动链接工作的步骤是什么。我不需要为此指定某种路径吗?一定要按特定顺序吗?

此代码在 DLL 中:

#include <SDL.h>
#include <SDL_image.h>
#include <SDL_mixer.h>
#include <SDL_ttf.h>

#pragma comment(lib, "SDL2.lib")
#pragma comment(lib, "SDL2main.lib")
#pragma comment(lib, "SDL2_image.lib")
#pragma comment(lib, "SDL2_mixer.lib")
#pragma comment(lib, "SDL2_ttf.lib")

感谢您抽出宝贵时间回答。

【问题讨论】:

  • 请不要发布文本图像,尤其是文本图像的链接(链接可能会过时,使问题变得毫无价值)。而是将文本逐字复制并粘贴到问题正文中。请read about how to ask good questions 供日后参考。

标签: visual-c++ dll linker comments pragma


【解决方案1】:

您尚未明确指定您使用的平台或开发环境,但您似乎使用的是最新版本的 Visual Studio。您需要在项目中配置“VC++ 目录”设置,以在“库目录”下包含 lib 文件的路径。这些 pragma 指令将指示链接器在这些目录中搜索 lib 文件。

【讨论】:

  • 不要编辑“VC++ 目录”。使用“配置属性/C\C++/常规/附加包含目录”。
  • 您认为不应使用 VC++ 目录的任何特殊原因?此外,您建议使用的字段是标题包含,而不是库包含。
【解决方案2】:

编译器抱怨它找不到 header sdl.h,它没有到达链接部分(我猜它在那里也会有问题)。

解决:

  1. 在此处添加 SDL 标头的路径:项目属性\C/C++\General\Additional 包含目录
  2. 在此处添加导入库的路径:项目属性\链接器\常规\附加库目录。

不要摆弄“VC++ 目录”——顾名思义,它是工具链寻找各种 VC 组件(crt、mfc、open mp、windows sdk 等)的地方。搞砸这个可能会导致极难诊断构建失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多