2

不久前,你们中的一些人建议我使用 FreeImage 作为 C++ 中图像处理的库。

我现在在让图书馆工作方面遇到了一些麻烦(这里还是比较新的)。

我尝试加载各种 vcxproj 和 sln 磁贴,它们给了我一个空白项目。由于没有为此提供任何安装说明,因此我放弃了将其作为 Visual Studio 解决方案。

接下来我尝试了使用 Makefile 编译源代码的老式方法,然后将“FreeImage/Source”添加到链接器。虽然当我调用 FreeImage.h 中声明的函数时 IDE 没有引发任何危险信号,但它在编译期间给了我一堆“错误 LNK2019:未解析的外部符号”,就好像这些函数不存在一样。我怀疑 IDE 找不到定义上述函数的 .cpp 文件,但是当我将 FreeImage/Source/FreeImage 添加到链接器时,我仍然遇到同样的问题。

现在,当我直接包含一些 .cpp 文件(即 Plugin.cpp 和 FreeImage.cpp)进行测试时,我得到了更多未解决的外部符号错误以及诸如“不一致的 dll 链接”之类的东西......对于例如 FreeImage.cpp:

const char * DLL_CALLCONV FreeImage_GetVersion() { static char s_version[16]; sprintf(s_version, "%d.%d.%d", FREEIMAGE_MAJOR_VERSION, FREEIMAGE_MINOR_VERSION, FREEIMAGE_RELEASE_SERIAL); return s_version; }

所以,我完全被困住了。我究竟做错了什么?我觉得我已经按照适当的步骤添加库依赖项,例如将作为直接父级的特定文件夹添加到 C/C++ 中的相关 .h 和 .cpp 文件 -> 常规 -> 附加包含的目录和链接器 -> 常规-> 添加库目录。

一些帮助将不胜感激!

4

1 回答 1

3

使用 FreeImage v3.15.3 我将 VS2008 项目转换为 VS2010 没有问题。该建筑也按预期工作。但是当我链接到静态库时,我得到了一些未解决的外部问题。首先我尝试了各种技巧设置 /MT /MD 链接,但这并没有解决这些链接问题。

在阅读了一些新手的评论后,我研究了 freeimage.h。在那里我找到了一个宏开关 FREEIMAGE_LIB 来控制函数的调用约定。在包含 freeimage.h 文件之前使用#define FREEIMAGE_LIB。这样您就可以轻松地静态链接到 FreeImage.lib

于 2012-07-17T09:32:57.060 回答