سؤال

وأظل الحصول على هذا الخطأ: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 ، والتي يتم تحديدها افتراضيًا:

alt text

هذه هي الوظيفة الرئيسية التي ينشئها Visual Studio افتراضيًا:

int _tmain(int argc, _TCHAR* argv[])

حيث يتم تعريف _tchar على أن يكون char أو wchar_t اعتمادًا على ما إذا كان _Unicode محدد أم لا. يحدث نفس الشيء مع وظائف API. أود أن أنصحك بعدم استخدام CreateFilea الصريح. قم بتغييرك الرئيسي واستخدم CreateFile.

اعتمادًا على إعداد البرمجي الخاص بك مجموعة الأحرف, ، قد تحتاج إلى إجراء تحويل متعدد / Widechar ، أو تغيير مجموعة الأحرف إذا كنت لا تهتم بما هو عليه.

للتحويل مع multibyteToWidechar ، انظر ما يلي ...

http://www.codeguru.com/forum/showthread.php؟t=231165

أعتقد أنك تجمع مع تمكين Unicode. ثم مع char argv[], argv هو char صفيف ، هكذا argv[1] هو char, ، و CreateFile يريد أ const wchar_t* كمعلمة أول ، وليس أ char.

ومع ذلك ، main التعريف مكسور أيضًا ، يجب أن يكون عليه char* argv[]. مع هذا التغيير ، يمكنك الاتصال CreateFileA.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top