Nomenclatura de métodos C++ administrados
Pregunta
Estoy usando C++ administrado para implementar un método que devuelve una cadena.Declaro el método en mi archivo de encabezado usando la siguiente firma:
String^ GetWindowText()
Sin embargo, cuando uso este método de C#, la firma es:
string GetWindowTextW();
¿Cómo me deshago de la "W" adicional al final del nombre del método?
Solución
Para evitar la piratería del preprocesador de los archivos de encabezado de Windows, declararlo así:
#undef GetWindowText
String^ GetWindowText()
Tenga en cuenta que, si realmente utiliza Win32 o MFC GetWindowText()
rutinas en su código, necesitará redefinir la macro o llamarlas como GetWindowTextW()
.
Otros consejos
GetWindowText es una llamada a la API de Win32 que tiene un alias mediante una macro para GetWindowTextW en su proyecto de C++.
Intente agregar #undef GetWindowText a su proyecto C++.
No C++ administrado sino C++/CLI para la plataforma .net.Un conjunto de extensiones de Microsoft para C++ para usar con su sistema .Net.
Preguntas frecuentes de Bjarne Stroustrup http://www.research.att.com/~bs/bs_faq.html#CppCLI
C++/CLI no es C++, no lo etiquete como tal.txs