Update:如果是为了练习C/C++编程,这种方法也不是不可以,但是如果你只是为了得到list,那就大可不必如此了。直接用batch或则python,都可以很方便的实现。
以batch为例,在包含lib文件的文件夹里,新建一个txt,输入以下内容,然后保存文件,将文件后缀改为.bat,例如test.bat,点击这个文件运行,就是生成一个1.txt的文件,里面就会list所有的.lib的名字。
dir *.bat /b/o:n>1.txt
每次配置VS时,需要填入关于opencv的附加依赖项,如下所示,有很多项需要填入,由于是自己编译的opencv,可能从网上寻找对应的list也不一定适用,但是手动一个个敲,又太麻烦,这时候程序员的价值就体现了,可以写个程序遍历库文件下的.lib文件,把文件名保存到一个txt文本中即可。
这个程序需要用到文件夹的遍历,可以参考下面两篇博客:
1)C/C++遍历目录下的文件或指定文件
2) c++ 遍历目录下的所有文件
下面是实现的代码:
#include<io.h>
#include<iostream>
#include<string>
#include<vector>
#include<direct.h>//for _chdir()
#include<fstream>
using namespace std;
int main()
{
const char *dir = "E:\\Opencv 3.2.0\\rebuild\\install\\x64\\vc14\\lib";//需要读取的文件夹路径
_chdir(dir);//设置工作路径
ofstream list;
//以写入及在文件末尾添加的方式打开.txt文件,没有的话就创建该文件
list.open("d:/Opencv Picture/list.txt", ios::out | ios::app);
struct _finddata_t fileinfo;
long long hFile;//类型很关键,win10一定要long long类型
if ((hFile = _findfirst("*.lib", &fileinfo)) == -1)
return -1;
else {
do {
cout << fileinfo.name << endl;//显示文件名字
list<< fileinfo.name << endl;//写入到txt文件
} while (_findnext(hFile, &fileinfo) == 0);
}
list.close();
return 0;
} //显示文件名字
list<< fileinfo.name << endl;//写入到txt文件
} while (_findnext(hFile, &fileinfo) == 0);
}
list.close();
return 0;
}
这里需要注意的是hFile的类型,在win10系统下一定要设置成long long类型,这个很关键,如果是long类型则会报错。