托管C ++方法命名

时间:2020-03-06 14:26:45  来源:igfitidea点击:

我正在使用托管c ++来实现返回字符串的方法。我使用以下签名在头文件中声明该方法:

String^ GetWindowText()

但是,当我从C#使用此方法时,签名为:

string GetWindowTextW();

如何消除方法名称末尾的多余" W"?

解决方案

为了避开Windows头文件的预处理器骇客,请像下面这样声明:

#undef GetWindowText
String^ GetWindowText()

请注意,如果我们在代码中实际使用Win32或者MFC的GetWindowText()例程,则需要重新定义宏或者将其称为GetWindowTextW()。

GetWindowText是一个win32 api调用,该调用通过C ++项目中的GetWindowTextW宏作为别名。

尝试将#undef GetWindowText添加到C ++项目。

.net平台不是托管c ++,而是C ++ / CLI。一组Microsoft C ++扩展,用于其.Net系统。

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

C ++ / CLI不是C ++,请不要这样标记。发射器