【问题标题】:Getting FreeImage to work with Visual Studio 2010让 FreeImage 与 Visual Studio 2010 一起工作
【发布时间】:2012-07-17 17:32:57
【问题描述】:

不久前有人建议 by some of 你使用 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 文件 -> 常规 -> 附加包含的目录和链接器 -> 常规-> 添加库目录。

我们将不胜感激!

【问题讨论】:

  • “我尝试加载各种 vcxproj 和 sln 磁贴,但它们给了我一个空白项目。”你能澄清一下吗? VC2010到底说了些什么?
  • VC2010 会执行转换过程,然后当它完成后,我看到一个包含一堆项目(即 FreeImage、LibPng 等)的解决方案,其中每个项目都是空的 - 没有标题,没有源代码,zilch .但是,您对我尝试简单地包含库文件夹有什么建议吗?正如我所描述的,VC 也在这方面给了我一些问题。
  • 这个问题似乎与 DLL 相关(我是一个新的 C++ 用户 - 它们像 .jar 文件吗?)。错误 LNK2019 消息实际上是“未解析的外部符号 imp__[insert function name] 错误,Google 告诉我 __imp 意味着函数是从 .dll 导入的(某些 C++ 版本的 .jar 文件?)。挖掘通过 FreeImage.h,我确实看到了一些像 #ifdef FREEIMAGE_EXPORTS #define DLL_API __declspec(dllexport) 这样的行,而出现 LNK 错误的 fxns 看起来像 DLL_API FIBITMAP *DLL_CALLCONV fxn() 我不确定这些变量是如何赋值的。
  • 我正在尝试同样的问题。

标签: c++ image-processing freeimage


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-12-08
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 2012-04-01
    • 2011-12-01
    相关资源
    最近更新 更多