让FreeImage与Visual Studio 2010一起工作

问题描述:

我被告知by some of您不久前已经将FreeImage用作C++中的图像处理库。让FreeImage与Visual Studio 2010一起工作

我现在在使图书馆工作上有些麻烦(这里还是比较新的)。

我试过加载各种vcxproj和sln瓷砖,他们给了我一个空白的项目。由于没有提供任何安装说明,我放弃了将其制作为视觉工作室解决方案。

接下来我尝试了使用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++ - > General - > Additional Included Directories and Linker - > General中添加直接父项的特定文件夹到相关的.h和.cpp文件 - >添加库目录。

一些帮助将不胜感激!

+0

“我试过加载各种vcxproj和sln瓷砖,他们给了我一个空白的项目。”你能澄清一下吗? VC2010究竟说了些什么? – 2012-02-10 10:03:34

+0

VC2010将完成转换过程,然后完成后,我会看到一个解决方案,其中包含一系列项目(即FreeImage,LibPng等),其中每个项目都是空的 - 没有标题,没有源,zilch。 但是,你有没有对我的任何建议,试图简单包括库文件夹?正如我所描述的,VC也给我提出了一些问题。 – 2012-02-10 20:34:08

+0

这个问题似乎与DLL有关(我是一个新的C++用户 - 他们喜欢.jar文件吗?)。错误LNK2019消息实际上是“未解析的外部符号__imp __ [插入函数名称]错误,并且Google告诉我__imp__暗示函数是从.dll(一些C++版本的.jar文件?)导入的。我通过FreeImage.h进行挖掘看到一些线,如 '#ifdef来FREEIMAGE_EXPORTS \t的#define DLL_API __declspec(dllexport)的' 和有LNK错误看起来像 'DLL_API FIBITMAP * DLL_CALLCONV FXN()' 我不知道这些瓦尔是如何分配的fxns值。 – 2012-02-11 00:35:08

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

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