Frage

Ich halte diesen Fehler: 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");

kann jemand helfen?

War es hilfreich?

Lösung

Es sollte

sein
int main(int argc, char* argv[]) 

Und

HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

Andere Tipps

Gehen Sie auf die Eigenschaften für Ihr Projekt und unter Konfiguration Eigenschaften / Allgemein, den Zeichensatz „Not Set“ ändern. Auf diese Weise wird der Compiler nicht davon ausgehen, dass Sie Unicode-Zeichen mögen, die standardmäßig aktiviert sind:

alt text

Dies ist die wichtigste Funktion, die Visual Studio standardmäßig erstellt:

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

Wo _TCHAR definiert ist char oder wchar_t je nachdem, ob _UNICODE definiert ist oder nicht. Das gleiche geschieht mit API-Funktionen. Ich würde Sie gegen die Verwendung von expliziten CreateFileA beraten. Ändern Sie Ihre Haupt-und Verwendung Create.

Je nach Compiler-Einstellung für CharacterSet , müssen Sie möglicherweise einen Multibyte / widechar Umwandlung durchzuführen, oder die CharacterSet zu ändern, wenn Sie kümmern sich nicht, was es ist.

mit MultiByteToWideChar Umwandlung finden Sie in der folgenden ...

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

Ich denke, man mit Unicode sind Kompilieren aktiviert. Dann mit char argv[], argv ist ein char Array, so argv[1] ein char ist, und CreateFile will einen const wchar_t* als ersten Parameter, kein char.

Wie gesagt, Ihre main Definition wird auch gebrochen, sollte es char* argv[] haben. Mit dieser Änderung können Sie CreateFileA nennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top