あなたの質問のコードリンクを考えると、問題はここにあるようです:
Serial::Serial(char *portName)
{
...
this->hSerial = CreateFile(portName, // <--- ERROR
CreateFile
LPCTSTR
は、最初の文字列パラメータとして期待される Win32 API です。
LPCTSTR
次のように展開される Win32 typedef です。
const char*
ANSI/MBCS ビルドで
const wchar_t*
Unicode ビルド (VS2005 以降のデフォルト)
VS2010 を使用しているため、おそらくデフォルトの Unicode ビルド モードになっています。
実際には、「物理的な」CreateFile
API は公開されていませんが、2 つの異なる機能があります:CreateFileA
とCreateFileW
. 前者はconst char*
入力文字列を受け取り、後者はconst wchar_t*
.
Unicode ビルドでCreateFile
は、に展開されたプリプロセッサ マクロCreateFileW
です。ANSI/MBCS ビルドでCreateFile
は、 に展開されCreateFileA
ます。
したがって、Unicode ビルド モードの場合、CreateFile 呼び出しは に展開されCreateFileW(const wchar_t*, ...)
ます。portName
は として定義されているため、とchar*
の間に不一致がwchar_t*
ありchar*
、コンパイル エラーが発生します。
それを修正するには、いくつかのオプションがあります。
たとえば、コード内で明示的に記述して、CreateFileA()
の代わりに呼び出すことができますCreateFile()
。const char*
このようにして、Visual Studio の実際の ANSI/MBCS/Unicode 設定とは別に、関数の ANSI/MBCS バージョン (つまり、 を取るもの) を使用することになります。
もう 1 つのオプションは、現在のビルド設定をデフォルトの Unicode モードから ANSI/MBCS に変更することです。これを行うには、次のパスをたどることができます。
Project Properties | Configuration Properties | General | Character Set
次のスクリーンショットに示すように、 [ Use Multi-Byte Character Set]を選択します。
