لا يمكن تحويل المعلمة 1 من "char" إلى "LPCWSTR"
-
29-09-2019 - |
سؤال
وأظل الحصول على هذا الخطأ:cannot convert parameter 1 from 'char' to 'LPCWSTR'
int main(int argc, char argv[])
{
// open port for I/O
HANDLE h = CreateFile(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
if(h == INVALID_HANDLE_VALUE) {
PrintError("E012_Failed to open port");
هل يمكن لأحد أن يساعد؟
المحلول
يجب أن يكون
int main(int argc, char* argv[])
و
HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
نصائح أخرى
انتقل إلى خصائص مشروعك وتحت خصائص التكوين/عام ، قم بتغيير الحرف إلى "غير تعيين". وبهذه الطريقة ، لن يفترض المترجم أنك تريد أحرف Unicode ، والتي يتم تحديدها افتراضيًا:
هذه هي الوظيفة الرئيسية التي ينشئها Visual Studio افتراضيًا:
int _tmain(int argc, _TCHAR* argv[])
حيث يتم تعريف _tchar على أن يكون char أو wchar_t اعتمادًا على ما إذا كان _Unicode محدد أم لا. يحدث نفس الشيء مع وظائف API. أود أن أنصحك بعدم استخدام CreateFilea الصريح. قم بتغييرك الرئيسي واستخدم CreateFile.
اعتمادًا على إعداد البرمجي الخاص بك مجموعة الأحرف, ، قد تحتاج إلى إجراء تحويل متعدد / Widechar ، أو تغيير مجموعة الأحرف إذا كنت لا تهتم بما هو عليه.
للتحويل مع multibyteToWidechar ، انظر ما يلي ...
أعتقد أنك تجمع مع تمكين Unicode. ثم مع char argv[]
, argv
هو char
صفيف ، هكذا argv[1]
هو char
, ، و CreateFile
يريد أ const wchar_t*
كمعلمة أول ، وليس أ char
.
ومع ذلك ، main
التعريف مكسور أيضًا ، يجب أن يكون عليه char* argv[]
. مع هذا التغيير ، يمكنك الاتصال CreateFileA
.