2

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

String^ GetWindowText()

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

string GetWindowTextW();

如何摆脱方法名称末尾的额外“W”?

4

3 回答 3

2

要绕过 Windows 头文件的预处理器骇客,请像这样声明它:

#undef GetWindowText
String^ GetWindowText()

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

于 2008-09-19T16:20:35.620 回答
0

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

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

于 2008-09-19T16:22:15.460 回答
0

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

Bjarne Stroustrup 的常见问题解答http://www.research.att.com/~bs/bs_faq.html#CppCLI

C++/CLI 不是 C++,不要这样标记它。发送

于 2008-09-19T16:36:13.023 回答