链接FreeImage作为一个静态库在VS2010
Linking FreeImage as a static library in VS2010?
我需要一个图像库,我一直在寻找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.me
FreeImage.h
FreeImage.lib
FreeImaged.lib
检查创建日期和时间。一定是刚烤好的热的。如果没有,从FreeImageSourceFreeImageLibDebug
和FreeImageSourceFreeImageLibRelease
复制。 - 在主应用程序中添加
FreeImageDist
和链接FreeImaged.lib
到调试配置和链接FreeImage.lib
到发布。 -
包含在源文件中:
#define FREEIMAGE_LIB
#include "FreeImage.h"
-
尝试呼叫
FreeImage_Initialise();
FreeImage_DeInitialise();
-
应该可以
编码快乐!
- C++从另一个类访问公共静态向量的正确方法是什么
- 静态结构和一个定义规则
- 分离一个静态常量 std::thread?
- 在作为静态成员包含在另一个类中的类的构造函数中使用 cout
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 在一个解决方案中针对第三方静态库 (Creo) 的不同版本(版本)进行构建
- 如果两个静态库使用相同的另一个静态库,如何避免"LNK2005 Already Defined error"?
- C++,每个循环初始化一个新的静态变量
- 从另一个标头中的标头调用静态方法
- 在 Visual Studio 中构建一个没有 C/C++ 运行时的静态库
- 如何正确实例化静态字段 tat 是另一个类对象
- C++ - 非静态 void* 成员,指向具有相同地址但不同值的不同对象的另一个非静态成员
- 使用 CMake 与其他静态库链接的静态库 - 一个有效,一个无效。为什么?
- 如何启用使用另一个类的静态方法的模板函数的自动推导,从而消除冗长的调用方代码
- 我可以使用 constexpr 函数声明一个静态数组吗?
- 静态常量与常量局部变量,哪一个性能更好
- 有没有办法声明一个公共静态常量,该常量将使用 constexpr 在源文件中定义(有什么区别)?
- 如果我有五个 Win32 静态控件,如何使用特定的前景色设置其中一个?
- win32 c++ 我想在静态标签的文本之后直接插入一个 EDIT 控件