質問
マネージド C++ を使用して文字列を返すメソッドを実装しています。次のシグネチャを使用してヘッダー ファイルでメソッドを宣言します。
String^ GetWindowText()
ただし、このメソッドを C# から使用する場合、署名は次のようになります。
string GetWindowTextW();
メソッド名の末尾にある余分な「W」を削除するにはどうすればよいですか?
解決
Windows ヘッダー ファイルのプリプロセッサ ハッキングを回避するには、次のように宣言します。
#undef GetWindowText
String^ GetWindowText()
実際に Win32 または MFC を使用する場合は、 GetWindowText()
コード内のルーチンを使用するには、マクロを再定義するか、マクロを次のように呼び出す必要があります。 GetWindowTextW()
.
他のヒント
GetWindowText は、C++ プロジェクトの GetWindowTextW へのマクロ経由でエイリアス化される win32 API 呼び出しです。
#undef GetWindowText を C++ プロジェクトに追加してみてください。
マネージド C++ ではなく、.net プラットフォーム用の C++/CLI。.Net システムで使用するための Microsoft の C++ 拡張機能のセット。
Bjarne Stroustrup の FAQ http://www.research.att.com/~bs/bs_faq.html#CppCLI
C++/CLI は C++ ではないため、そのようにタグ付けしないでください。送信
所属していません StackOverflow