繁体   English   中英

Visual Studio 2013-C ++错误

[英]Visual Studio 2013 - C++ Errors

一些奇怪的事情发生了。 当我在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语句似乎存在一些问题。 您需要弄清楚为什么要重新定义MailRecipient。 您可能必须在Visual Studio中调整某些项目设置。
另外,如第一个答案所示,Visual Studio默认情况下使用UNICODE,这将导致它调用Windows API函数的宽字符串版本。 您可以使用std :: widen函数将字符串转换为仅用于Windows API调用。 有关此主题的更多信息,请参见utf8everywhere.org

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM