将FreeImage链接为VS2010中的静态库?

时间:2013-04-24 07:44:56

标签: c++ image freeimage

我需要一个图像库,我一直在研究FreeImage,http://freeimage.sourceforge.net/。 我想将它与我的应用程序静态链接。

我已经尝试下载二进制文件并将其链接,但是当我尝试调用它们的函数时,我得到2019个链接器错误,即使我是肯定的,我将它链接正确。

然后我尝试下载他们的源代码,将他们的“FreeImageLib.2008”转换为VS2010并构建它。它自己构建得很好,但是在链接它时我仍然遇到同样的问题,我使用它的应用程序仍抱怨链接器错误。

我还设置了所有项目配置以匹配我的其他项目,因此与/ MDd或/ MTd等没有冲突。

我在他们的源代码中进行了一些挖掘,并且有像“FREEIMAGE_LIB”这样的宏,这表明它应该在构建静态库时定义,并且它已经定义,但它仍然不起作用。

我已经google了,找不到任何可靠的答案。 Getting FreeImage to work with Visual Studio 2010的答案没有区别;我已经在包含头文件之前定义了宏,或者作为预处理器参数定义了宏,但它确实有效。

这个库是不是要用作静态库,或者可能是什么问题? 有没有人能够在VS2010 +上静态链接FreeImage?

由于

1 个答案:

答案 0 :(得分:11)

是的,我已经能够在几个Visual Studio版本上静态链接FreeImage。在这里,我描述了我通常如何做到这一点。

使用FreeImage,默认情况下,我们有8个选项可将其链接到您的应用:

FreeImage - 动态链接(你需要dll)。

FreeImageLib - 静态链接。

每个都可以使用“Debug”或“Release”配置以及Win32或Win64平台构建。

因此,假设我们的应用需要(静态&& Win32&& Debug)和(静态&& Win32&& Release)变体。同样在我们的应用程序中,我们使用Dynamic Runtime Library(默认情况下,FreeImage由于某种原因设置为静态) 我们通常如何得到它:

  • 下载并打开新版本(或至少清理旧版本)

  • 打开FreeImage.2008.sln使用Shift +单击选择所有10个项目。然后在“Project(s)Properties / C ++ / Code generation”中,我们选择/ MDd用于“Debug”配置,/ MD用于“Release”。

  • 然后我们转到“菜单/构建/批量构建”,选择:

    FreeImageLib | Debug | Win32

    FreeImageLib | Release | Win32

并按“Build”。

  • 等待选择的配置构建。我们需要的所有内容都将复制到FreeImage\Dist文件夹

  • FreeImage\Dist文件夹检查文件中: delete.me FreeImage.h FreeImage.lib FreeImaged.lib 检查创建日期和时间。它必须是新鲜出炉和热的。如果没有,请从FreeImage\Source\FreeImageLib\DebugFreeImage\Source\FreeImageLib\Release

  • 复制它们
  • 在主要应用程序中添加include和lib FreeImage\Dist并将FreeImaged.lib链接到Debug配置,将FreeImage.lib链接到Releases。
  • 包含在源文件中:

    #define FREEIMAGE_LIB

    #include "FreeImage.h"

  • 尝试打电话 FreeImage_Initialise(); FreeImage_DeInitialise();

  • 应该有效

快乐的编码!