2012-07-30 119 views
1

可以使用Visual Studio 2010编译libexif吗?我一直在试图这样做,并且遇到了很多问题。我找不到任何有关以前是否有人成功完成此任务的信息。我知道我可以使用MinGW编译库,但是我处于需要使用Visual Studio编译的情况,然后需要从Visual C++应用程序链接到它。这可能吗?使用Visual Studio 2010将libexif编译为静态库 - 然后从Visual C++项目链接

+0

我知道这是一个老问题,但我也有同样的问题。尽管仍然需要.h文件,并且libexif中的.h文件需要生成一个config.h文件,但可能更容易找到DLL(如GIMP的libexif.dll)并使用dumpbin创建.lib文件。 – ALM865 2015-06-09 07:00:28

回答

0

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

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

不要期待你的希望。 * nix做事的方式是需要首先运行的配置脚本。它会自动生成源文件以将库结合到* nix的特定风格。配置脚本差不多有半个兆字节。三倍于实际.c文件中的代码:)如果没有MinGW,您无法合理地使其工作,因此您可以执行该脚本。一旦你完成了,VS VS解决方案可以更好地实现。只要它不使用太多的C99特定语法。

1

要回答你的问题:是的这是可能的...但它有点破解。 Libexif使用MSVC选择不执行的函数。见我的工作例如VS2010以下项目(如果你不喜欢下载文件,然后跳到我的什么需要改变,以得到它的解释如下工作):

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

要阐述的问题是需要“黑客”(作为LibExif自述-win32.txt文档中暗示)有:

  • Libexif使用直列在其未在VS定义C,是仅含有C几个地方++(见this

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

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

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

  • 有一个随机未签名的静态*这需要从.c文件在VS .h文件为C移动不允许你在他们的特殊方式创建内部功能的新变量试图去做。