31

このエラーが発生し続けます: 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");

誰かが助けることができますか?

4

5 に答える 5

123

プロジェクトのプロパティに移動し、構成プロパティ/一般の下で、文字セットを「未設定」に変更します。このように、コンパイラは、デフォルトで選択されている Unicode 文字が必要であると想定しません。

代替テキスト

于 2010-10-13T14:58:40.160 に答える
6

そのはず

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

HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
于 2010-10-13T14:51:33.513 に答える
5

これは、Visual Studio が既定で作成するメイン関数です。

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

_TCHAR は、_UNICODE が定義されているかどうかに応じて、char または wchar_t に定義されます。API 関数でも同じことが起こります。明示的に CreateFileA を使用しないことをお勧めします。メインを変更し、CreateFile を使用します。

于 2010-10-13T14:59:33.420 に答える
2

CharacterSetのコンパイラ設定によっては、multibyte / widechar 変換を実行するか、それが何であるかを気にしない場合は CharacterSet を変更する必要がある場合があります。

MultiByteToWideChar での変換については、以下を参照してください...

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

于 2010-10-13T15:08:34.367 に答える
0

Unicodeを有効にしてコンパイルしていると思います。次にchar argv[]argvchar配列であり、argv[1]はでcharあり、はではなく、最初のパラメータとしてCreateFile必要です。const wchar_t*char

そうは言っても、あなたのmain定義も壊れています、それは持っているべきchar* argv[]です。その変更で、を呼び出すことができますCreateFileA

于 2010-10-13T14:54:48.563 に答える