带有 MSVC++ 的 exiflib

Posted

技术标签:

【中文标题】带有 MSVC++ 的 exiflib【英文标题】:exiflib with MSVC++ 【发布时间】:2011-01-10 06:45:15 【问题描述】:

我是 exiflib 的新手。我已经下载了 exiflib 源文件 (libexif-0.6.20.zip),并包含在我的 VC++ 项目中。当我尝试构建时,它会产生一些链接器错误,

未解析的外部符号_exif_entry_get_value,符号_exif_format_get_name ..

任何帮助将不胜感激..

【问题讨论】:

【参考方案1】:

在 MSVC++ 中编译 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 不允许您在函数内创建新变量以他们试图做的特定方式。

一旦您解决了上述问题,您未解决的外部符号问题就会消失。

【讨论】:

以上是关于带有 MSVC++ 的 exiflib的主要内容,如果未能解决你的问题,请参考以下文章

带有 MSVC++ 的 exiflib

带有 MSVC++ 2012 的 Unicode

Qt安装显示:MSVC2015 编译器带有感叹号,及解决办法

带有 MSVC x64 的 fesetround

带有链接时代码生成的 MSVC 能否跨 C 和 C++ 进行优化?

在带有 msvc2008 编译器的 Qt 中使用 afx_msg