标准C++无法在Qt Creator中编译
Standard C++ doesn't compile in Qt Creator
目前我正在使用qt创建者中的mingw32 g 编译器。
我已经通过进行了移植从codeBlocks到QT的代码,因此我可以使用QT的网络功能,但是当我通过代码端口时,它无法与以下错误进行编译:
C:softwareQtAutoUploadmain.cpp:90: error: cannot convert 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' to 'LPCWSTR {aka const wchar_t*}' for argument '1' to 'void* FindFirstFileW(LPCWSTR, LPWIN32_FIND_DATAW)'
HANDLE handle = FindFirstFile(dir, &search_data);
给出此错误的代码片段是第8行:
1 vector<string> getFilesInDir(string directory)
2 {
3 vector<string> filenames;
4 string dir = string(directory + "\*");
5
6 WIN32_FIND_DATA search_data;
7 memset(&search_data, 0, sizeof(WIN32_FIND_DATA));
8 HANDLE handle = FindFirstFile(dir.c_str(), &search_data);
9 while (handle != INVALID_HANDLE_VALUE)
10 {
11 if (FindNextFile(handle, &search_data) == FALSE) break;
12 if (search_data.cFileName == string(".") || search_data.cFileName == string(".."))
13 {
14 cout << "Ignoring..." << endl;
15 continue;
16 }
17 filenames.push_back(search_data.cFileName);
18 cout << search_data.cFileName << endl;
19 }
20
21 FindClose(handle);
22 return filenames;
23 }
在此处和此处发现的其他问题,表明这是Windows API与LPCWSTR
类型一起使用的Unicode编码的问题,但是此答案要么不完整或不正确。我使用CodeBlocks和QT创建者的编码设置是UTF-8,而不是Unicode或任何其他编码方法。
如果这是一个Unicode问题,则此代码将不是在Visual Studio或CodeBlocks中编译的,但无论如何。唯一 QT创建者在做什么突然使此代码非功能?
Windows API中的所有功能实际上都是宏。
如果您查看此FindFirstFile
参考的底部,您会发现有两个功能FindFirstFileW
和FindFirstFileA
。使用哪一个取决于UNICODE
宏,如果未定义ANSI函数(FindFirstFileA
),则使用 wide warge 版本版本(FindFirstFileW
)。
如果定义了 UNICODE
,则需要使用诸如字符串类,是std::wstring
。
相关文章:
- 使用Qt Creator在调试模式下编译一段代码
- Qt Creator 在执行步骤 "make" 时出现编译错误,-fno-stack-limit
- 设置Qt Creator以链接和编译汇编代码
- 为什么使用Qt Creator调整.ui文件会导致编译期间对.h文件进行更改
- 如何在QT Creator开源版本中为嵌入式Linux交叉编译qt
- 标准C++无法在Qt Creator中编译
- 一般来说,使用Qt Creator,是什么导致程序在调试模式下编译时正确运行,但在发布模式下崩溃
- 为什么我在使用 Qt creator 用 C 编译代码时出错,但可以使用 make 文件轻松做到这一点
- 错误:为 Symbian 编译 Qt Creator 项目时"undefined reference to `__cxa_get_exception_ptr'"
- 预编译HEADERS在使用Qt Creator/qmake/MinGw的调试构建中不起作用
- 在Windows上用Qt Creator编译Cuda代码
- 使用Qt Creator编译Optix-链接问题
- 在Qt Creator中编译时出现Qt错误
- DLL注入是有效的,除非我在Qt Creator中编译它
- 使用 Qt creator 编译 PythonQt
- 在Qt Creator中编译Visual Studio 2010项目
- 使用 QT-Creator 编译并链接 C++ 和 C 程序
- 通过终端和编译创建项目文件失败,但通过Qt Creator IDE工作正常
- 我的异常在编译Qt Creator时没有被捕获
- 编译iOS时Qt Creator Tesseract链接器错误