簡體   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