Denominazione del metodo C ++ gestito
Domanda
Sto usando il c ++ gestito per implementare un metodo che restituisce una stringa. Dichiaro il metodo nel mio file di intestazione usando la seguente firma:
String^ GetWindowText()
Tuttavia, quando sto usando questo metodo da C #, la firma è:
string GetWindowTextW();
Come sbarazzarsi del supplemento "W" alla fine del nome del metodo?
Soluzione
Per aggirare la pirateria informatica del preprocessore dei file di intestazione di Windows, dichiararla così:
#undef GetWindowText
String^ GetWindowText()
Nota che, se in realtà usi le routine GetWindowText ()
Win32 o MFC nel tuo codice, dovrai ridefinire la macro o chiamarle come GetWindowTextW ()
.
Altri suggerimenti
GetWindowText è una chiamata api win32 che viene aliasata tramite una macro su GetWindowTextW nel progetto C ++.
Prova ad aggiungere #undef GetWindowText al tuo progetto C ++.
Non gestito c ++ ma C ++ / CLI per la piattaforma .net. Un set di estensioni Microsoft per C ++ da utilizzare con il loro sistema .Net.
FAQ di Bjarne Stroustrup http://www.research.att.com /~bs/bs_faq.html#CppCLI
C ++ / CLI non è C ++, non etichettarlo come tale. Txs