我正在使用托管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