我想创建一个简单的程序,用于按扩展名对文件进行分类,但是当试图编译时出错了
严重级代码说明项目文件行错误LNK2019未解析 函数" void中引用的外部符号__imp__PathFileExistsW @ 4 __cdecl classifyFiles(void)" (?classifyFiles @@ YAXXZ)
我的代码是调用PathFileExists的地方:
void classifyFiles() {
for (int i = 0; i < files.max_size(); i++) {
//if each folder doesn't exist, create folder
LPCWSTR folderName = (L"\\" + extensions.at(i)).c_str();
if (!PathFileExistsW(folderName)) {
CreateDirectory(folderName, NULL);
};
LPCWSTR destination = (extensions.at(i) + files.at(i)).c_str();
//move file
MoveFile(files.at(i).c_str(), destination);
}
}
我用谷歌搜索了一下,似乎还不足以包含Shlwapi.h
标题,还需要链接库。但我无法找到有关如何在Visual Studio中执行此操作的任何答案。
注意:我也遇到问题是每个菜单和所有内容(这是我第一次使用Visual Studio),所以请明确说明在哪里找到可能包含屏幕截图的内容。
参考文献:https://msdn.microsoft.com/en-us/library/windows/desktop/bb773584(v=vs.85).aspx
答案 0 :(得分:3)
将shlwapi.lib添加到依赖项列表中:
配置属性 - &gt;链接器 - &gt;输入 - &gt;附加依赖
答案 1 :(得分:1)
我为构建成功做了两件事:
添加
#pragma comment(lib, "Shlwapi.lib")
包括之后。
在我的具体情况下,更改以下代码行会因某些原因产生差异,即使它们是相同的。改变:
if (!PathFileExistsW(folderName))
要:
if (PathFileExistsW(folderName) == FALSE)
出于某种原因使用PathFileExists的值,就像第一个输出链接错误一样,即使其他一切都是有序的。第二天,我再次测试它,并且两种方式都有效。也许这是我的想象力并且犯了一些错误。
答案 2 :(得分:0)
首先你需要add VC++ directories 然后你需要设置链接器输入。