2009-09-30 12 views

risposta

11

Non è possibile importare una classe. Puoi solo importare le funzioni. Rudy Velthuis has written at length on the topic. Anche se non è possibile utilizzare direttamente una classe esportata C++, egli descrive un paio di tecniche per ottenere lo stesso effetto:

  • "Appiattire" l'oggetto, quindi sul lato chiamante non v'è più alcun oggetto, basta un puntatore che viene passato alla DLL insieme ad altri parametri per una serie di funzioni che racchiudono i metodi dell'oggetto. Scrivere il wrapper è molto semplice, anche se può essere noioso.

  • Utilizzare classi virtuali pure. I compilatori Windows C++ e Delphi hanno generalmente gli stessi layout VMT, quindi se la classe C++ può essere descritta da un elenco di metodi virtuali puri, è possibile creare una dichiarazione Delphi equivalente, eseguire il cast di tipo con il puntatore oggetto restituito dalla DLL, e procedere.

Nell'articolo sono riportati esempi completi di entrambi i modi.

4

Non è possibile utilizzare le classi C++ esportate da una DLL per quanto ne so in Delphi; puoi usare le funzioni C e puoi importare classi COM in Delphi.

Problemi correlati