托管 C++ 方法命名
我正在使用托管 C++ 来实现返回字符串的方法。 我使用以下签名在头文件中声明该方法:
String^ GetWindowText()
但是,当我从 C# 使用此方法时,签名是:
string GetWindowTextW();
如何去掉方法名称末尾的额外“W”?
I'm using managed c++ to implement a method that returns a string. I declare the method in my header file using the following signature:
String^ GetWindowText()
However, when I'm using this method from C#, the signature is:
string GetWindowTextW();
How do I get rid of the extra "W" at the end of the method's name?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
要绕过 Windows 头文件的预处理器黑客攻击,请按如下方式声明:
请注意,如果您实际上在代码中使用 Win32 或 MFC
GetWindowText()
例程,则需要重新定义宏或将其调用为GetWindowTextW()
。To get around the preprocessor hackery of the Windows header files, declare it like this:
Note that, if you actually use the Win32 or MFC
GetWindowText()
routines in your code, you'll need to either redefine the macro or call them asGetWindowTextW()
.GetWindowText 是一个 win32 api 调用,通过 C++ 项目中的宏为 GetWindowTextW 提供别名。
尝试将 #undef GetWindowText 添加到您的 C++ 项目中。
GetWindowText is a win32 api call that is aliased via a macro to GetWindowTextW in your C++ project.
Try adding #undef GetWindowText to you C++ project.
不是托管 c++,而是适用于 .net 平台的 C++/CLI。 一组 Microsoft 对 C++ 的扩展,用于其 .Net 系统。
Bjarne Stroustrup 的常见问题解答 http://www.research.att.com/~bs /bs_faq.html#CppCLI
C++/CLI 不是 C++,不要这样标记它。 发送方
Not Managed c++ but C++/CLI for the .net platform. A set of Microsoft extensions to C++ for use with their .Net system.
Bjarne Stroustrup's FAQ http://www.research.att.com/~bs/bs_faq.html#CppCLI
C++/CLI is not C++, don't tag it as such. Txs