Ich habe den Leitfaden auf CodeProject befolgt und eine DLL mit einer abstrakten Schnittstelle erstellt und die Factory-Funktionen mit dem Befehl extern "C"
zusammen mit __declspec(dllexport)
und __cdecl
exportiert. Dadurch wird laut dem Artikel die DLL compilerunabhängig mit einer klaren Schnittstelle. Wenn jedoch die DLL auf zwei verschiedenen Versionen von g++ verwendet wird, führt die nicht standardmäßige ABI zu standardmäßigen c++-Problemen bei DLL-Aufrufen. Zusätzlich zu dem CodeProject-Artikel habe ich auch einen Artikel von MinGW verwendet, um mehrere Instanzen der Klasse erstellen zu können.
Wie ist es dann möglich, die DLL compilerunabhängig zu machen? Und wenn dies nicht möglich ist, ist es dann möglich, eine Klasse innerhalb einer DLL zu instanziieren und die Funktionen rein in C zu machen, aber die mit der instanziierten Klasse verbundenen C++-Funktionen aufzurufen?