Export von Funktionen mit extern "C" bei VS und BCB
-
Also ich versuch grade einen Text über DLLs für meine Diplomarbeit zusammenzutippen.
Die Infos hol ich mir aus dem Petzold, der Win2000 SuperBible, dem BCB Tut und diversen Seiten.
Ich dachte bisher, daß bei der Verwendung von extern "C" durch das Abschalten des NAme Manglings von C++ Namen rauskommen, die sowohl der BCB als auch das VS kennen.
Schreibe seitenweise Text und beziehe mich darauf um DLLs für BCB UND VS erzeugen zu können....
Und stelle gerade fest, dass ich das mit statischer Bindung nie probiert habe sondern immer mit dynamischer. Und da ist ja alles egal, da man sich die Namen oder die Ordinate mit Impdef organisieren kann beim BCB. Und beim VS dann entsprechend.
Ich probiers also aus... Und muss feststellen, dass statische Bindung doch nicht funktioniert. Selbst wenn man eine VS DLL nimmt, implib drüberjagd und alles einbindet.
Also konkreter Versuch: DLL unter VS05 programmiert, Implib drübergejagd und im BCB eingebunden. Unresolved external. Gleiche DLL unter BCB erstellt und bei beiden Impdef gemacht:
VS DLL:
Set_Double @5 ; Set_DoubleBCB DLL
_Set_Double @5 ; _Set_DoubleAlso bringt das Abschalten von Name Mangling in Wirklichkeit nur etwas, wenn man zwischen C und C++ innerhalb des gleichen Compilers switchen will? Versteh ich das recht?
Möchte man DLLs bei anderen Compilern verwenden, so muss dann eine lib speziell für den Compiler erzeugt werden? Auch richtig?Somit beschränkt sich die Sprachenunabhängigkeit von DLLs aufs dynamische Laden oder auf die Verwendung innerhalb der gleichen Entwicklugnsumgebung? (C++ DLL mit extern C und dann in C# verwenden ebenfalls mit extern c, aber nur innerhalb der gleichen IDE)?
Ist das die Problematik warum bestimmte Bibliotheken unter dem BCB nicht gescheit laufen?