一直在用visual studio,当然只停留在编一些很简单的小程序,或是从网上down一些成品看看效果的水平上,每次从网上下载下程序编译总是麻烦不断,今天又是在这样的纠结中度过,问题解决后回想,主要问题就在lib,dll上,总结一下解决过程。
今天想看retinex模型的程序,网上下载的一个大程序使用了libpng和fftw的库,我的直观想法就是把他们下载下来,在visual studio的property里include上就好啦。
现实不是这样的,这些库里.h文件include就好了,没错,但是同时LINK里需要添加相应的.lib才能保证程序能运行而不出现unresolved symbol。。。。
然后我的有一个想当然的想法就是去下载.lib, .dll,结果又出现了compile和run使用的是uncompatible library的问题
其实问题在于.lib .dll不应该直接去下载,而是应该用之前下载的libpng和fftw的库编译生成。
下载的fftw库文件夹内有.def文件,参见“http://www.fftw.org/install/windows.html”中 “ Windows Installation Notes” 中的介绍,在visual studio里使用 command prompt命令,用.def生成.dll, .lib
lib /def:libfftw3-3.def lib /def:libfftw3f-3.def lib /def:libfftw3l-3.def注意visual studio里原本没有command prompt时,external tools->add , 参数如下,其中arguments里注意后半部分为visual studio的安装目录,我的情况是“F:\Program Files (x86)\Microsoft Visual Studio 11.0\VC/vcvarsall.bat”,目录错误的话命令行中lib命令不存在
libpng库的文件中没有.def文件,但在lpng1612\projects\vstudio里有vstudio.sln文件,根据“http://beeproc.wordpress.com/2012/12/29/building-static-zlib-v1-2-7-with-msvc-2012/”,在release模式下build项目,可以生成相应的.dll和.lib
在需要调用的工程中加入这些文件,即可顺利运行。 已成功,记录在此,以免再犯错误!