繁体   English   中英

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

[英]Linking FreeImage as a static library in VS2010?

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

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

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

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

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

我已经google了,找不到任何可靠的答案。 让FreeImage与Visual Studio 2010一起使用的答案没有任何区别; 我已经在包含头文件之前定义了宏,或者作为预处理器参数定义了宏,但是dosnt工作。

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

谢谢

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

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

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

FreeImageLib - 静态链接。

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

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

  • 下载并解压缩新版本(或者至少清理旧的distib)

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

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

    FreeImageLib | Debug | Win32

    FreeImageLib | Release | Win32

然后按“构建”。

  • 等待选择的配置构建。 我们需要的所有内容都将被复制到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();

  • 它应该工作

快乐的编码!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM