本文整理了我引用的相关博客和自己的实际操作,以便日后自己回顾,供大家参考。
1.去官网下载压缩包并解压到自己的文件夹,我下载的是vlfeat-0.9.20-bin这个版本。http://www.vlfeat.org/download.html
2.打开vs2015 x64本机工具命令提示符(开始菜单下面vs2015对应的文件夹),输入以下命令:
记下14.00.24210.0这个版本号。
3.打开vlfeat-0.9.20/make/nmake_helper.mak文件,由于没有vs2015的版本号,需要在ELSE处添加,如图所示:
其他vs版本对应的值如图所示:
4.打开vlfeat-0.9.20/Makefile.mak文件,如果vs2015的安装路径不是默认的,需要修改成自己的路径,如图:
5.打开vs2015 x64本机工具命令提示符,定位到存放vlfeat的目录,进行编译,以下为编译通过:
完成后,将会在/vlfeat-0.9.20/bin目录下,新增一个win64目录,里面会有生成的vl.dll、vl.lib和一些test执行文件。
1.snprintf重定义,需要修改vlfeat-0.9.20/vl/host.h文件,以下链接提供了解决方案,我按照理解直接加入了两段代码:
https://stackoverflow.com/questions/27754492/vs-2015-compiling-cocos2d-x-3-3-error-fatal-error-c1189-error-macro-definiti
链接的意思是很多库和程序使用#define snprintf _snprintf,后来c99标准也定义了snprintf()函数(官方支持),如果当前编译器支持c99,此时就会导致snprintf重定义。我加入的第一段代码是允许vs2015以后的版本(包括vs2015)支持c99。第二段代码是vs2015之前的版本需要定义snprintf。
或者snprintf重定义和isnan重定义也可以直接注释掉。(行315,316,335,336)
2.don’t know how to make msvcr140.dll,原因是根本没有msvcr140.dll文件,只有msvcp140.dll。
打开vlfeat-0.9.20/Makefile.mak文件,需要将Makefile.mak文件中所有出现msvcr的地方改成msvcp(注意,只改小写的地方)
在vs2015中编写项目并成功运行可以参考官方文档http://www.vlfeat.org/vsexpress.html
以下给出我的步骤(配置64位系统操作,32位同理):
自己创建一个简单的项目,需要修改项目属性来包含VLFeat这个库和一些目录。
右击项目名称test,选择属性。接着按照以下截图操作。
到这里可以编译成功,但是不能运行,如图,会提示没有vl.dll。
官方文档给的解决方案是:
如果你可以运行,那就成功了,但是我的程序还是提醒找不到,于是我就把vlfeat-0.9.20\bin\win64\vl.dll这个动态库复制到我创建的项目的test/x64/Debug下就可以了。
最后,感谢各位博主提供的教程。
https://blog.csdn.net/weiwei9363/article/details/65434976
https://blog.csdn.net/u011718701/article/details/51452011