kann nicht Parameters 1 von ‚char‘ konvertieren ‚LPCWSTR‘
-
29-09-2019 - |
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?
Lösung
Es sollte
seinint 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:
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 ...
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.