Dénomination des méthodes C ++ gérées
Question
J'utilise le c ++ géré pour implémenter une méthode qui renvoie une chaîne. Je déclare la méthode dans mon fichier d'en-tête en utilisant la signature suivante:
String^ GetWindowText()
Cependant, lorsque j'utilise cette méthode à partir de C #, la signature est:
string GetWindowTextW();
Comment puis-je me débarrasser de l'extra "W"? à la fin du nom de la méthode?
La solution
Pour contourner le hackery préprocesseur des fichiers d'en-tête Windows, déclarez-le comme suit:
#undef GetWindowText
String^ GetWindowText()
Notez que si vous utilisez réellement les routines Win32 ou MFC GetWindowText ()
dans votre code, vous devrez redéfinir la macro ou les appeler comme GetWindowTextW ()
.
Autres conseils
GetWindowText est un appel API Win32 aliasé par une macro avec GetWindowTextW dans votre projet C ++.
Essayez d’ajouter #undef GetWindowText à votre projet C ++.
C ++ non géré mais C ++ / CLI pour la plate-forme .net. Un ensemble d'extensions Microsoft en C ++ à utiliser avec leur système .Net.
FAQ de Bjarne Stroustrup http://www.research.att.com /~bs/bs_faq.html#CppCLI
C ++ / CLI n'est pas C ++, ne le marquez pas comme tel. Txs