J'ai suivi un excellent article de Rudy Velthuis sur l'utilisation de classes C++ dans les DLL. Tout était en or, sauf que j'ai besoin d'accéder à certaines classes qui n'ont pas d'usines correspondantes dans la DLL C++. Comment puis-je construire une instance d'une classe dans la DLL? Les classes en question sont définies commeCréer une instance d'une classe C++ exportée à partir de Delphi
class __declspec(dllexport) exampleClass
{
public:
void foo();
};
Maintenant sans usine, je n'ai aucun moyen clair d'instancier la classe, mais je sais que cela peut être fait, comme je l'ai vu des scripts SWIG (fichiers .i) qui rendent ces classes disponibles pour Python. Si Python & SWIG peut le faire, alors je suppose/j'espère qu'il y a un moyen de le faire se produire dans Delphi aussi.
Maintenant, je ne sais pas grand chose sur SWIG, mais il semble qu'il génère une sorte de carte pour les noms C++ brouillés? Est-ce que c'est proche? En regardant les exportations de la DLL, je suppose que je pouvais accéder aux fonctions & constructor/destructor par index ou le nom mutilé directement, mais ce serait méchant; et cela fonctionnerait-il même? Même si je peux appeler le constructeur, comment puis-je faire l'équivalent de "new CClass();" à Delphi?
Juste pour clarifier, j'utilise la solution des classes virtuelles pures (classes abstraites pures en Delphi). – Atorian