【问题标题】:Compiling libexif as static lib with Visual Studio 2010 - then linking from Visual C++ project使用 Visual Studio 2010 将 libexif 编译为静态库 - 然后从 Visual C++ 项目链接
【发布时间】:2012-07-30 19:10:50
【问题描述】:

是否可以使用 Visual Studio 2010 编译 libexif?我一直在尝试这样做,并且遇到了一大堆问题。我找不到任何关于之前是否有人成功完成此操作的信息。我知道我可以使用 MinGW 编译库,但我需要使用 Visual Studio 编译它,然后需要从 Visual C++ 应用程序链接到它。这可能吗?

【问题讨论】:

  • 我知道这是一个老问题,但我也有同样的问题。查找 DLL(例如 GIMP 的 libexif.dll)并使用 dumpbin 创建 .lib 文件可能更容易,尽管您仍然需要 .h 文件,而 libexif 中的 .h 文件需要生成 config.h 文件.

标签: visual-studio-2010 visual-c++ libexif


【解决方案1】:

回答您的问题:是的这是可能的......但这有点像黑客。 Libexif 使用 MSVC 选择不实现的功能。请参阅下面的工作示例 VS2010 项目(如果您不喜欢下载文件,请跳到我对需要更改的内容的说明以使其工作):

https://www.dropbox.com/s/l6wowl8pouux01a/libexif-0.6.21_CompiledInVS2010%2BExample.7z?dl=0

详细来说,需要“破解”的问题(如 LibExif readme-win32.txt 文档中所暗示的)是:

  • Libexif 在几个地方使用了 inline,这在 VS 中没有为 C 定义,只有 C++(参见 this

  • Libexif 在 VS 中未定义的代码中广泛使用 snprintf(参见 here

  • 您需要自己创建 config.h,而不需要 ./configure 命令来帮助您。您可以通读该脚本,但其中大部分内容对于 Windows VS2010 没有意义。

  • 您需要定义GETTEXT_PACKAGE,因为它可能已在配置文件中设置。我只是选择UTF-8,是否正确我不确定。

  • 有一个随机的 unsigned static * 需要从 .c 文件移动到 .h 文件,因为 VS 中的 C 不允许您在函数内创建新变量以他们试图做的特定方式。

【讨论】:

    【解决方案2】:

    阅读“readme-win32.txt”文件。建议是:

    以某种方式破解自己的构建系统。
    这似乎是 Windows 的做事方式。

    不要抱太大希望。 *nix 的做事方式是需要先运行的配置脚本。它自动生成源文件以将库与 *nix 的特定风格结合起来。配置脚本几乎是半兆字节。实际 .c 文件中的代码是实际 .c 文件的三倍 :) 如果没有 MinGW,您将无法合理地使其正常工作,因此您可以执行脚本。完成此操作后,您就可以使用 VS 解决方案更好地解决问题。只要不使用过多的 C99 特定语法即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多