0

이상한 일이 발생합니다. Dev-C++로 프로그램을 컴파일하면 에러가없고 깨끗하게 컴파일됩니다. Visual Studio에 넣을 때 많은 오류가 있습니다 :Visual Studio 2013 - C++ 오류

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++ tho에서 작동합니다. 아이러니하게도 Dev-C++에서 컴파일하지 않는 POCO 라이브러리에서 무언가를 추가하고 싶기 때문에 VS에서 컴파일해야합니다. 어떤 도움이 필요합니까?

+6

이러한 오류를 일으키는 코드를 보지 않고도 실제로 알 수는 없습니다. 하지만 적어도 당신의 캐릭터 유형에 문제가 있고 코드가 어떻게 컴파일되도록 설정되어 있는지 (유니 코드 대 멀티 바이트 등) – crashmstr

+0

@crashmstr 나는 컴파일러 지식에 익숙하지 않다. 실제로 코드를 변경하지 않고 이러한 오류를 무시할 수 있습니까? – user3478487

+0

@ user3478487 솔직히 말하면 바보 같은 생각입니다. 컴파일러 오류는 코드가 유효하지 않다는 것을 의미합니다. 왜 이것을 무시하고 싶습니까? – CoryKramer

답변

2

Visual Studio 프로젝트는 기본적으로 UNICODE을 정의합니다.

프로젝트 설정에서 유니 코드를 해제하거나 wchar_t 기반 문자열 (예 : "Blah" 대신 L"Blah")을 사용하도록 프로그램을 다시 작성할 수 있습니다.

#undef UNICODE 또는 <windows.h>을 포함하여 모든 곳을 포함 할 수 있습니다.

+0

3 개의 오류를 없앴습니다. 여전히 7 나머지 : ( – user3478487

+0

나는 오류없이 작동하도록 만들었고 새로운 프로젝트를 만들어야했다 !!!!! – user3478487

0

프로젝트에 #include 문에 대한 몇 가지 문제가있는 것 같습니다. MailRecipient가 재정의되는 이유를 알아야합니다. Visual Studio에서 일부 프로젝트 설정을 조정해야 할 것입니다.
또한 첫 번째 대답은 Visual Studio에서 기본적으로 유니 코드를 사용하므로 Windows API 함수의 와이드 문자열 버전을 호출하게됩니다. std :: widen 함수를 사용하여 Windows API 호출 용 문자열 만 변환 할 수 있습니다. 이 주제에 대한 자세한 내용은 utf8everywhere.org을 참조하십시오.

+0

#includes를 다시 배열하고 POCO를 추가했다 .CopyFile 및 GetModuleFileName에 대해 2 개의 오류 만 받았다. 어떤 아이디어가 있습니까? – user3478487

+0

을 추가하면 작동합니다. 신경 쓰지 마세요 :) 도움을 주셔서 감사합니다! – user3478487