2008-09-19 108 views
2

我正在使用託管C++實現返回字符串的方法。我使用下面的簽名聲明該方法在我的頭文件:託管C++方法命名

String^ GetWindowText() 

然而,當我使用此方法從C#,簽名是:

string GetWindowTextW(); 

如何擺脫在方法名稱末尾加上「W」?

回答

2

要解決Windows頭文件的預處理器兩輪牛車,其聲明如下:

#undef GetWindowText 
String^ GetWindowText() 

需要注意的是,如果你真的使用Win32或MFC GetWindowText()程序在你的代碼,你需要要麼重新定義宏或稱它們爲GetWindowTextW()

+0

啊,現在我明白了。問題是我正在使用重新定義GetWindowText()作爲GetWindowTextA()的頭文件。我完全錯過了。謝謝! – Karl 2008-09-19 16:24:51

0

GetWindowText是一個win32 API調用,它是通過宏在您的C++項目中用GetWindowTextW進行別名的。

嘗試添加#undef GetWindowText到你的C++項目。

0

未託管C++,但C++/CLI用於.net平臺。 C++的一組微軟擴展,用於他們的.Net系統。

了Bjarne Stroustrup的FAQ http://www.research.att.com/~bs/bs_faq.html#CppCLI

C++/CLI是不是C++,不要將其標記爲此類。 Txs

+0

雖然這個問題也適用於「老式」C++,但它只是以不同的方式展示自己(嘗試從dll導出一個名爲GetWindowText的函數並通過C接口調用它)。 – Eclipse 2008-09-19 18:11:25