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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top