eigene Klasse weitergeben, aber ohne Sourcecode (war: einfache Frage)
-
Ich habe eine Klasse erstellt, die gut funktioniert. Jetzt will ich die Klasse einem Freund weitergeben.
Er soll alle Methoden verwenden können, die ich implementiert habe. Aber soll den Quellcode nicht sehen können (nur header Datei soll er sehen).Geht das im BB, wenn ja wie ? was muss ich im Borland Builder einstellen um die Klasse so zu compilieren ?
Edit:
Bitte aussagekräftige Überschriften wählen. Danke!
-
Eine DLL daraus erstellen.
-
Wie kann man diese DLL erzeugen ? Ich habe so etwas noch nie gemacht.
Kann mir jemand eine kurze Anleitung geben, in der FAQ steht nur wie man eine DLL einbindet aber nicht wie man eine DLL erstellt.
-
greetz
-
winner22,
winner22 schrieb:
Er soll alle Methoden verwenden können, die ich implementiert habe. Aber soll den Quellcode nicht sehen können (nur header Datei soll er sehen).
gib ihm die "MyClass.h" und die "MyClass.obj".
Die .h wird inkludiert und das Objekt-File mit#pragma link "MyClass"
eingebunden.
Der Include und der LIB-Pfad müssen dann noch auf die Dateien verweisen.
-
Danke, die Möglichkleit mit der obj-Datei funktioniert. genau das suchte ich.
Dann muss ich mich gar nicht mit DLL auseinandersetzen (vielleicht später einmal).
-
hallo,
das mit der dll ist nur wichtig, wenn deine klasse eine komponenten-klasse wäre, also von tcomponent abgelitet. wenn du dann verhindern wolltest, das dein quellcode gesehen würde, würdest du eine "borland-dll" eine *.bpl erzeugen und die weitergeben.
aber sehr trauen kannst du deinem freund ja nicht, wenn der den code nicht sehen darf :-)...
mfg
murphy
-
dschensky schrieb:
gib ihm die "MyClass.h" und die "MyClass.obj".[/cpp]
Sind die OBJ-Dateien zwischen den verschiedenen Compiler- bzw. Linker-Versionen binärkompatibel, lässt sich also z.B. eine mit dem BCB6 erstellte *.obj im BCB5 linken?
-
naja, ich muss Jansen bedenken zustimmen. Dafür gibt es aber eh Packages.
-
Jansen schrieb:
Sind die OBJ-Dateien zwischen den verschiedenen Compiler- bzw. Linker-Versionen binärkompatibel ...?
Nein - nach meiner Erfahrung zumindest nicht zwischen CB4 und CB6.
AndreasW schrieb:
Dafür gibt es aber eh Packages.
Die lassen sich aber IMHO nur dann Versions-Übergreifend installieren, wenn auch die Quellen dabei sind. In diesem Fall werden die obj-files halt beim Installieren erzeugt - oder?
-
... also sicherheitshalber doch eine DLL basteln.
-
F98 schrieb:
... also sicherheitshalber doch eine DLL basteln.
Also ich habe da meine Zweifel, ob eine DLL der richtige Weg ist. Mit einer DLL gibst Du ja keine Klasse weiter sondern nur Funktionalität. Es ist IMHO z.B. nicht möglich, mit Hilfe einer DLL die darin verwendete Klasse abzuleiten.
-
Eine andere Möglichkeit wäre ActiveX-Komponente. Dann braucht Dein Freund dafür nicht mal Borland. Mit VB tuts auch. Aber Du brauchst dann mindestens die Professional (oder erst ab Enterprise?), um damit gescheit zu arbeiten.
Dll geht auch, wenn Du eine Schnittstellen-Klasse erstellst, Deine Klasse von dieser erben lässt. Und dann in der Dll erzeugst.
-
hallo,
also wenn es zwecks der unterschiedlichen versionen (5,6) keine probleme gibt, und es nur eine klasse ist, finde ich sollte man die kirche im dorf lassen und das mit der obj h kombination machen, reicht doch vollkommen aus. ausserdem, ein package verwendet man normalerweise nur von tcomponent abgeleiteten klassen, dafür sind sie vorgesehen...
mfg
murphy
-
hallo,
@dschensky: geb ich dir im prinzip recht.
aber:
"Es ist IMHO z.B. nicht möglich, mit Hilfe einer DLL die darin verwendete Klasse abzuleiten."
das stimmt seit DotNet nicht mehr, jetzt kann man aus einer dll die in einer beliebigen sprache geschrieben wurde, klassen in seiner eigenen sprache ableiten.
mfg
murph
-
murphy schrieb:
"Es ist IMHO z.B. nicht möglich, mit Hilfe einer DLL die darin verwendete Klasse abzuleiten."
das stimmt seit DotNet nicht mehr, jetzt kann man aus einer dll die in einer beliebigen sprache geschrieben wurde, klassen in seiner eigenen sprache ableiten.
Wie ich schon oben schrieb ist es möglich, musst Du nur eine Funktion exportieren, die dir die Klasse erstellt und einen Zeiger liefert.
PS: Seit wann untertützt BCB .Net? Oder habe ich Dich falsch verstanden?
-
Klassen aus einer DLL
exportieren (ich glaube, das hatten wir hier schonmal):
http://www.inf.hs-zigr.de/~fatman98/builder_dll.php (siehe ganz unten).
-
hallo,
@bIce: ich glaube du hast mich falsch verstanden, ich habe teilweise zitiert, ist aber auch egal...
mfg
murph
-
bIce,
bIce schrieb:
Wie ich schon oben schrieb ist es möglich, musst Du nur eine Funktion exportieren, die dir die Klasse erstellt und einen Zeiger liefert.
wie mir scheint, sprechen wir hier von verschiedenen Arten des "Exports".
Der Export den Du meinst sorgt für die Erzeugung von Instanzen einer Klasse. Dafür läßt sich eine DLL vermutlich verwenden (habe ich noch nie probiert).
Ich hatte mich auf den Export eines Typs bezogen, was auch die Möglichkeit des Ableitens eröffnet.