【问题标题】:How to use libpng in Visual Studio?如何在 Visual Studio 中使用 libpng?
【发布时间】:2016-02-05 16:39:08
【问题描述】:

我正在使用 boost 通用图像库,它需要 libpng。我构建了 libpng 并获得了文件 libpng.lib、zlib.lib 和 libpngd.lib。当我尝试编译我的项目时,Visual Studio 给出了一个致命错误

fatal error LNK1120: 21 unresolved externals

带有一堆未解析的外部符号,例如 _png_set_sig_bytes_png_read_row。这是怎么回事,如何解决?

【问题讨论】:

  • 首先检查您是否与库链接
  • 所以你构建了 libpng 和朋友们-很好。您确定已将这些库包含到您的 .exe 项目的“链接”中吗?看这里:msdn.microsoft.com/en-us/library/669zx6zc.aspx
  • @paulsm4 我已将这些库包含在包含目录、库目录和链接器的附加库目录中。它仍然会产生错误。
  • 我使用 libpng 并且没有问题。所以如果你说你做的一切都是正确的,除非我们看到你的机器,否则除了说“你做错了,你认为你做对了”之外,真的没有什么可以做的。
  • 您是否在 .exe 的链接命令中明确包含“libpng.lib”、“zlib.lib”和“libpngd.lib”? PS:您没有在“包含目录”中“包含库”:(包含目录包含标题。这似乎正在工作-您正在成功编译。

标签: c++ visual-studio boost visual-studio-2015 libpng


【解决方案1】:

来自 MSDN:

https://msdn.microsoft.com/en-us/library/ba1z7822.aspx?f=255&MSPPError=-2147217396

To add .lib files as linker input in the development environment

    Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.

    Click the Linker folder.

    Click the Input property page.

    Modify the Additional Dependencies property.

你必须这样做;在 .exe 的链接命令中明确指定“libpng.lib”、“zlib.lib”和“libpngd.lib”。

【讨论】:

    【解决方案2】:

    所以这是来自一个头脑简单的白痴,所以也许这会有所帮助....我花了一点时间才掌握。基本上,您正在下载源代码。这意味着,您必须是编译源代码的人。

    Windows 可以在命令提示符下编译用 C 语言编写的程序。您必须构建程序,它会输出 .dll 或 .lib 文件。那个或那些是您链接到 Visual Studio 应用程序的文件。

    您将依赖项设置为头文件,这些头文件通常类似于源代码根文件夹或所有这些 .h 文件所在的位置。

    然后您将链接器设置为链接到 .dll 或 .lib 文件。在 Boost C++ 的情况下,您需要链接到“lib”文件夹。

    我认为你需要的是复习并完全掌握基础知识。这是 Microsoft 提供的有关 Windows 如何从命令提示符编译 C 程序的链接: https://docs.microsoft.com/en-us/cpp/build/walkthrough-compile-a-c-program-on-the-command-line?view=vs-2019

    【讨论】:

      猜你喜欢
      • 2014-06-07
      • 2015-02-12
      • 2012-09-24
      • 1970-01-01
      相关资源
      最近更新 更多