我在将我的项目与FreeImage库与VSE 2013链接时遇到了很多麻烦
我已经按照VS2010的这个答案无济于事:Linking FreeImage as a static library in VS2010?
调用FreeImage函数时,我收到了LNK2019错误。
我像任何图书馆一样链接了图书馆。以下是我做的以下步骤:
下载FreeImage Source。
打开2008解决方案(转换为2013年)并将所有项目的代码生成更改为/ MDd
尝试构建项目但由于某种原因未定义min / max函数所以我将algorithm.h包含在那些文件中并停止了这些错误。
尝试构建项目时出现错误:“无法打开”afxres.h“。所以我按照另一个主题的建议将afxres.h与windows.h交换。
建立项目 - >成功
将Fresh FreeImaged.lib复制到我的项目
将FreeImaged.dll复制到我正在构建.exe的调试文件夹
将FreeImage.h添加到项目中
在包含标题
尝试构建我的项目 - >到处都是LNK2019。
如果有人能够在VS2013上构建FreeImage并且可以分享他们是如何做到的,我会非常感激,或者如果有人有任何建议。
答案 0 :(得分:3)
您遇到麻烦的原因是,在Visual Studio 2013中引入了一些与C ++ 11一致性相关的重大更改(as outlined by Microsoft)。
其中一个包括为了使用 std :: min()/ std :: max(),您现在必须包含标题 。这也涉及FreeImage。不幸的是,直到版本3.6.1(截至今天的最新版本),这还没有修复。
这个blog post解释了为了编译它需要做些什么。最相关的部分是:
具体来说,您需要添加
include <algorithm>
到以下文件:
Source/OpenEXR/IlmImf/ImfOutputFile.cpp
Source/OpenEXR/IlmImf/ImfScanLineInputFile.cpp
Source/OpenEXR/IlmImf/ImfTiledMisc.cpp
Source/OpenEXR/IlmImf/ImfTiledOutputFile.cpp
Source/OpenEXR/Imath/ImathMatrixAlgo.cpp
答案 1 :(得分:0)
我可以通过进入Configuration Manager取消选中FreeImage并检查构建中的FreeImageLib来实现此功能。同样禁用整个程序优化似乎使二进制大小更正常,并在链接时消除警告。
我知道这个问题超过一年了。只是为任何人提供答案谷歌像我一样搜索这个问题。
答案 2 :(得分:0)
版本:FreeImage3170Win32Win64.zip
os.env。:win7 64bit 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)
也许这会有所帮助:)