我正在使用託管C++實現返回字符串的方法。我使用下面的簽名聲明該方法在我的頭文件:託管C++方法命名
String^ GetWindowText()
然而,當我使用此方法從C#,簽名是:
string GetWindowTextW();
如何擺脫在方法名稱末尾加上「W」?
我正在使用託管C++實現返回字符串的方法。我使用下面的簽名聲明該方法在我的頭文件:託管C++方法命名
String^ GetWindowText()
然而,當我使用此方法從C#,簽名是:
string GetWindowTextW();
如何擺脫在方法名稱末尾加上「W」?
要解決Windows頭文件的預處理器兩輪牛車,其聲明如下:
#undef GetWindowText
String^ GetWindowText()
需要注意的是,如果你真的使用Win32或MFC GetWindowText()
程序在你的代碼,你需要要麼重新定義宏或稱它們爲GetWindowTextW()
。
GetWindowText是一個win32 API調用,它是通過宏在您的C++項目中用GetWindowTextW進行別名的。
嘗試添加#undef GetWindowText到你的C++項目。
未託管C++,但C++/CLI用於.net平臺。 C++的一組微軟擴展,用於他們的.Net系統。
了Bjarne Stroustrup的FAQ http://www.research.att.com/~bs/bs_faq.html#CppCLI
C++/CLI是不是C++,不要將其標記爲此類。 Txs
雖然這個問題也適用於「老式」C++,但它只是以不同的方式展示自己(嘗試從dll導出一個名爲GetWindowText的函數並通過C接口調用它)。 – Eclipse 2008-09-19 18:11:25
啊,現在我明白了。問題是我正在使用重新定義GetWindowText()作爲GetWindowTextA()的頭文件。我完全錯過了。謝謝! – Karl 2008-09-19 16:24:51