C++ 屋宇署;将FreeImage与Visual Studio Express 2013链接

C++ 屋宇署;将FreeImage与Visual Studio Express 2013链接,c++,visual-studio-2013,visual-studio-express,freeimage,C++,Visual Studio 2013,Visual Studio Express,Freeimage,我在用VSE 2013将我的项目与FreeImage库链接时遇到了很多问题 对于VS2010,我遵循了这个答案,但毫无结果: 调用FreeImage函数时出现LNK2019错误 我像链接任何图书馆一样链接了图书馆。以下是我采取的以下步骤: 下载免费图像源代码 打开2008年解决方案(转换为2013年),并将所有项目的代码生成更改为/MDd 试图构建项目,但由于某些原因,未定义min/max函数,因此我将algorithm.h包含到这些文件中,从而停止了这些错误 尝试构建项目时,我遇到一个错误:“

我在用VSE 2013将我的项目与FreeImage库链接时遇到了很多问题

对于VS2010,我遵循了这个答案,但毫无结果:

调用FreeImage函数时出现LNK2019错误

我像链接任何图书馆一样链接了图书馆。以下是我采取的以下步骤:

  • 下载免费图像源代码

  • 打开2008年解决方案(转换为2013年),并将所有项目的代码生成更改为/MDd

  • 试图构建项目,但由于某些原因,未定义min/max函数,因此我将algorithm.h包含到这些文件中,从而停止了这些错误

  • 尝试构建项目时,我遇到一个错误:“无法打开”afxres.h“。所以我按照另一个主题中的建议将afxres.h与windows.h交换

  • 创建项目->成功

  • 已将新鲜FreeImaged.lib复制到我的项目

    • 将目录添加到“附加库目录”
    • 将FreeImaged.lib添加到链接器下的其他依赖项
  • 已将FreeImaged.dll复制到正在生成.exe的调试文件夹中

  • 将FreeImage.h添加到项目中

  • 添加了#在包含标题之前定义FREEIMAGE_库

  • 试图在任何地方构建我的项目->LNK2019


  • 如果有人能够在VS2013上构建FreeImage,并且能够分享他们是如何实现的,我将不胜感激,或者如果有人有任何建议。

    您遇到麻烦的原因是Visual Studio 2013在与C++11一致性相关的方面引入了一些突破性的更改()

    其中一个包括为了使用std::min()/std::max(),现在必须包含标题。这也与FreeImage有关。不幸的是,直到版本3.6.1(今天最新的版本)为止,这还没有得到修复

    这说明了要编译它需要做什么。最相关的部分是:

    具体来说,您需要添加

    包括

    到以下文件:


    我可以通过进入配置管理器取消选中FreeImage并检查构建中的FreeImageLib来实现这一点。此外,禁用整个程序优化似乎可以使二进制大小更正常,并在链接时消除警告


    我知道这个问题已经有一年多的历史了。只要给像我这样在谷歌上搜索这个问题的人一个答案。

    版本:FreeImage3170Win32Win64.zip

    操作系统环境:win7 64位visualstudio ULTIMATE 2013

    操作:

         1_ just unpacking the zip somewhere
             e.g. (D:/library/FreeImage3170Win32Win64/FreeImage)
    
         2_ in C/C++->General->Additional Including Directerories
             add (D:/library/FreeImage3170Win32Win64/FreeImage/Dist/x32)
    
         3_ in Linker->General->Additional Library Directerories
             add (D:/library/FreeImage3170Win32Win64/FreeImage/Dist/x32)
    
         4_  in Linker->Input->Additional Dependency
             add (FreeImage.lib)
    
    • PS0:我只是添加了一个新条目来包含目录和库 目录和FreeImage.lib到链接器->在Visual Studio中输入,而不重建FreeImage库 :)
    • PS1:添加FreeImage/Dist/x64选项时发生错误LNK2019 (对此一无所知)

    也许这有帮助:)

    我在编译Ogre3D时也遇到了同样的麻烦…FreeImage编译很好,但Ogre没有链接它,在每次引用FreeImage函数时都会链接LNK2019。嗨,我做了这些更正,尝试构建FreeImage静态库,结果成功了。我还使用了另一个答案来构建FreeImage作为静态库,它也适用于VS2013:问题m是最终库文件的大小。调试版本(FreeImaged.lib)为52.1MB,发布版本(FreeImage.lib)是一个惊人的99.7MB大小。你觉得这对吗?这确实很大。使用VS2012,我得到的FreeImage.lib=~20MB和FreeImage_d.lib~49MB。但是这些大小可能取决于不同的编译设置,无论是IDE/编译器还是库本身(我不确定我们在Ogre3D是否只使用FreeImage库的一个子集)。
         1_ just unpacking the zip somewhere
             e.g. (D:/library/FreeImage3170Win32Win64/FreeImage)
    
         2_ in C/C++->General->Additional Including Directerories
             add (D:/library/FreeImage3170Win32Win64/FreeImage/Dist/x32)
    
         3_ in Linker->General->Additional Library Directerories
             add (D:/library/FreeImage3170Win32Win64/FreeImage/Dist/x32)
    
         4_  in Linker->Input->Additional Dependency
             add (FreeImage.lib)