链接FreeImage作为一个静态库在VS2010

Linking FreeImage as a static library in VS2010?

本文关键字:静态 一个 VS2010 FreeImage 链接      更新时间:2023-10-16

我需要一个图像库,我一直在寻找FreeImage, http://freeimage.sourceforge.net/。我想把它静态地链接到我的应用程序。

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

于是我试着下载他们的源码,把他们的"FreeImageLib"转换成。到VS2010并构建它。它自己构建得很好,但是当链接到它时,我仍然有同样的问题,我使用它的应用程序仍然抱怨链接器错误。

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

我在他们的源代码中做了一些挖掘,有像"FREEIMAGE_LIB"这样的宏,建议它应该在构建静态库时定义,它被定义了,但仍然不起作用。

我在谷歌上搜索了一下,找不到任何关于这个问题的可靠答案。让FreeImage与Visual Studio 2010一起工作的答案没有区别;我已经定义了宏,或者在包含头文件之前,或者作为预处理器参数,但它不起作用。

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

谢谢

是的,我已经能够在几个Visual studio版本上静态地链接FreeImage。这里我描述一下我通常是怎么做的。

使用FreeImage,默认情况下,我们有8个选项来链接到你的应用程序:

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

FreeImageLib - static link.

这些都可以用"调试"或"发布"配置构建,适用于Win32或Win64平台。

那么,假设我们需要(Static &&Win32和,和(静态&&Win32和,同样在我们的应用中,我们使用动态运行库(默认情况下,由于某种原因,FreeImage设置为静态)我们通常是怎么得到它的:

  • 下载并解包新版本(或至少清理旧发行版)

  • 打开FreeImage.2008.sln,用Shift+click选择所有10个项目。然后在"Project(s) Properties/c++/Code generation"中选择/MDd作为"Debug"配置,/MD作为"Release"配置。

  • 然后我们进入"菜单/构建/批量构建",选择:

    FreeImageLib | Debug | Win32

    FreeImageLib | Release | Win32

,按"Build"键。

  • 等待所选配置构建。所有我们需要的将复制到FreeImageDist文件夹

  • FreeImageDist文件夹检查文件:delete.meFreeImage.hFreeImage.libFreeImaged.lib检查创建日期和时间。一定是刚烤好的热的。如果没有,从FreeImageSourceFreeImageLibDebugFreeImageSourceFreeImageLibRelease复制。

  • 在主应用程序中添加FreeImageDist和链接FreeImaged.lib到调试配置和链接FreeImage.lib到发布。
  • 包含在源文件中:

    #define FREEIMAGE_LIB

    #include "FreeImage.h"

  • 尝试呼叫FreeImage_Initialise();FreeImage_DeInitialise();

  • 应该可以

编码快乐!

相关文章: