Einzelnen Beitrag anzeigen

Robotiker
(Gast)

n/a Beiträge
 
#5

AW: Borland C++ Dll export

  Alt 16. Jun 2012, 11:13
Hallo,

du schreibst "Borland C++", ist das wirklich etwas altes aus vor Delphi Zeiten ? Oder meinst du den C++ Builder ?

Code:
long MidiClass::getLyricTime(long index)
Das ist die Memberfunktion einer Klasse, bzw. der Anfang der Definition der selben.

Code:
extern "C" __declspec(dllexport)long getLyricTime(long index);
Das ist die Deklaration einer C-Funktion. Nicht identisch mit der obigen Memberfunktion. Wenn es keine Implementierung dazu gibt, wird auch kein Export erzeugt und der Compiler meckert auch nicht. Soweit alles ok.

Man kann keine Memberfunktionen von Klassen "lose" aus einer DLL exportieren. Nur ganze Klassen, mit denen kann Delphi aber wohl nichts anfangen.

Mit einer C-Funktion habe ich das gerade mal im C++ Builder XE2 getestet. Ein
Code:
extern "C" __declspec(dllexport) int foo()
{
  return 42;
}
wird brav als _foo exportiert.

Mit einer zusätzlichen Moduldefinitionsdatei
Code:
LIBRARY TestDll

EXPORTS
        foo = _foo
auch zusätzlich als foo.

Nur wie man nur foo exportiert, kriege ich gerade nicht raus. In Visual Studio ginge das mit
Code:
LIBRARY TestDll

EXPORTS
        foo
aber da kommt beim Builder eine Linkerwarnung (und _foo).
  Mit Zitat antworten Zitat