AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Borland C++ Dll export

Ein Thema von EWeiss · begonnen am 14. Jun 2012 · letzter Beitrag vom 16. Jun 2012
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Borland C++ Dll export

  Alt 14. Jun 2012, 20:57
versuche gerade mal in Borland c++ eine DLL zu erstellen.
aber achtung habe das noch nie gemacht.

mein export sieht so aus

Code:
long MidiClass::getLyricTime(long index)
Code:
extern "C" __declspec(dllexport)long getLyricTime(long index);
glaube aber das es nicht richtig ist auch wenn der compiler nicht meckert.
ich hab die DLL mal in depends eingeladen aber keine exports gefunden.

wie müßte dieser aussehen das ich ihn auch in Delphi/Pascal verwenden kann?

gruss

Geändert von EWeiss (14. Jun 2012 um 20:59 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Borland C++ Dll export

  Alt 15. Jun 2012, 17:45
ops.. Niemand hier der C++ kann.

gruss
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Borland C++ Dll export

  Alt 15. Jun 2012, 18:26
Hm, also ich würd sagen so in etwa:
Delphi-Quellcode:
function getLyricTime(index : LongInt) : LongInt; cdecl; external 'dllname.dll';
//Wenn LongInt net geht direkt Integer
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Borland C++ Dll export

  Alt 15. Jun 2012, 18:54
Hm, also ich würd sagen so in etwa:
Delphi-Quellcode:
function getLyricTime(index : LongInt) : LongInt; cdecl; external 'dllname.dll';
//Wenn LongInt net geht direkt Integer
Danke mein problem ist nur kann keine exports in der DLL ausmachen.
Oder sind die bei BC++ nicht sichtbar?

Un ob der Export so wie ich ihn ausführe richtig ist kann ich auf anhieb auch nicht sagen.

Mit depends seh ich nichts.
Das einbinden in Delphi mach ich ja auch so nur dann muss die Function auch public sein.

Edit:
So wie ich mir dachte da stimmt was nicht der Einsprungspunkt wird nicht gefunden.

gruss

Geändert von EWeiss (15. Jun 2012 um 19:14 Uhr)
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#5

AW: Borland C++ Dll export

  Alt 16. Jun 2012, 10: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
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Borland C++ Dll export

  Alt 16. Jun 2012, 10:22
Zitat:
du schreibst "Borland C++", ist das wirklich etwas altes aus vor Delphi Zeiten ? Oder meinst du den C++ Builder ?
Ja meine den C++ Builder

Code:
long MidiClass::getLyricTime(long index)
Ist die function welche ich exportieren möchte.

habe jetzt mal eine andere alternative versucht.
Code:
extern "C" __declspec(dllexport) long __stdcall getLyricTime(long index);
und unter Compiler ausgabe "Exportierten Symbolen keinen Unterstrich voranstellen"

So gehts alles nicht hab einfach bzw. fast keine Kenntnis was C++ Bulider angeht.
In C++ keine problem da leg ich ne "def" an und gut ist.

Edit:
Zitat:
Nur ganze Klassen, mit denen kann Delphi aber wohl nichts anfangen.
Dann kann ich das wohl vergessen

Danke für die Hilfe

gruss

Geändert von EWeiss (16. Jun 2012 um 10:48 Uhr)
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#7

AW: Borland C++ Dll export

  Alt 16. Jun 2012, 10:58
habe jetzt mal eine andere alternative versucht.
Code:
extern "C" __declspec(dllexport) long __stdcall getLyricTime(long index);
Wie schon gesagt, das hat nichts mit der Memberfunktion aus der Klasse zu tun. Schon auch, weil die Anzahl der Paramter unterschiedlich ist. Eine nicht statische C++ Memberfunktion hat implizit immer den this-Pointer als ersten Parameter.

In C++ keine problem da leg ich ne "def" an und gut ist.
Du meinst Visual C++ ? Wie oben gezeigt, geht das mit der .def im Builder fast genau so.

Zitat:
Nur ganze Klassen, mit denen kann Delphi aber wohl nichts anfangen.
Dann kann ich das wohl vergessen
Umgekehrt geht es, der Builder kann mit *.pas Dateien und Delphi Packages und Komponenten umgehen. Wenn du also mit diesem C++ Code, den du da anscheinend hast, ein VCL-Programm schreiben willst, mach es statt mit Delphi mit dem C++ Builder, das ist sein wesentlicher Daseinszweck.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Borland C++ Dll export

  Alt 16. Jun 2012, 11:02
Danke für deine Erläuterungen muss meinen versuch dann wohl erstmal bei seite schieben.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz