天天看点

VS编译——C/C++遍历库目录得到附加依赖项列表

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文本中即可。

VS编译——C/C++遍历库目录得到附加依赖项列表

这个程序需要用到文件夹的遍历,可以参考下面两篇博客:

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类型则会报错。