Visual Studio 2013 - C++ Errors

Visual Studio 2013 - C++ Errors

本文关键字:C++ Errors 2013 Studio Visual      更新时间:2023-10-16
一些

奇怪的事情发生了。当我在 Dev-C++ 中编译我的程序时,它不会给我任何错误并且编译干净。当我把它放在Visual Studio中时,我得到了很多错误:

Error   1   error C2371: 'MailRecipient' : redefinition; different basic types
Error   2   error C3861: 'GetModuleFileName': identifier not found  
Error   3   error C2664: 'HRESULT SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR)' : cannot convert argument 5 from 'char [260]' to 'LPWSTR'
Error   4   error C3861: 'CopyFile': identifier not found
Error   5   error C2664: 'BOOL SetFileAttributesW(LPCWSTR,DWORD)' : cannot convert argument 1 from 'char [512]' to 'LPCWSTR'
Error   6   error C2664: 'HRESULT SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR)' : cannot convert argument 5 from 'char [260]' to 'LPWSTR'
Error   7   error C2664: 'BOOL SetFileAttributesW(LPCWSTR,DWORD)' : cannot convert argument 1 from 'char []' to 'LPCWSTR'
Error   8   error C2664: 'LSTATUS RegOpenKeyExW(HKEY,LPCWSTR,DWORD,REGSAM,PHKEY)' : cannot convert argument 2 from 'const char [46]' to 'LPCWSTR'
Error   9   error C2664: 'HRESULT SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR)' : cannot convert argument 5 from 'char [260]' to 'LPWSTR'
Error   10  error C2664: 'LSTATUS RegSetValueExW(HKEY,LPCWSTR,DWORD,DWORD,const BYTE *,DWORD)' : cannot convert argument 2 from 'const char [9]' to 'LPCWSTR'

这一切都适用于 Dev-C++。我需要在 VS 中编译它,因为我想从 POCO 库中添加一些东西,具有讽刺意味的是,它不能在 Dev-C++ 中编译......有什么帮助吗?

默认情况下,Visual Studio 项目定义UNICODE

您可以在项目设置中关闭 Unicode,也可以重新设计程序以使用基于wchar_t的字符串(例如 L"Blah"而不是"Blah")。

或者,您可以在包括<windows.h>之前#undef UNICODE,每个地方。

项目中的 #include 语句似乎存在一些问题。你需要弄清楚为什么MailSender被重新定义。您可能需要调整Visual Studio中的某些项目设置。
此外,正如第一个答案所表明的那样,Visual Studio默认使用UNICODE,这导致它调用Windows API函数的宽字符串版本。您可以使用 std::widen 函数来转换仅用于 Windows API 调用的字符串。有关本主题的详细信息,请参阅 utf8everywhere.org。