Deutsch
C ++ Forum

DLL-Export

 
>> Erzeugen von DLLs aus Profan²/XProfan-Codes

Eine Beschreibung, wie man Funktionen exportiert habe ich leider nicht gefunden. Eine kurze Erläuterung wäre nett.
 
24.07.2005  
 



Na Du wieder - is doch ganz einfach:

Wie sonst??

Salve, iF.

PS: Und nun sag auch noch man erzeugt damit keine .dll aus XProfan heraus?!!! :/:
 
25.07.2005  
 




Sebastian
König

Eine Beschreibung, wie man Funktionen exportiert habe ich leider nicht gefunden. Eine kurze Erläuterung wäre nett.


Hallo Thomas,

in der Hilfe gibt es doch den neuen Abschnitt Dynamic Link Libraries . Hier ein Ausschnitt daraus:

Die Direktive $DLL, die am Anfang des Quellcodes stehen sollte, teilt Profan2Cpp mit, dass eine DLL generiert werden soll.

Prozeduren, die exportiert werden sollen, werden mit dllproc eingeleitet. Nach dem Namen der Prozedur wird dabei als zweites Argument die Anzahl der Parameter, die die Prozedur erwartet, angegeben. Diese Zahl sollte natürlich mit dem, was später mit parameters spezifiziert wird, übereinstimmen. Mit dllproc deklarierte Prozeduren können nicht verschachtelt werden.


Es gibt dort auch ein kurzes Beispiel für eine DLL. Alles klar?

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
25.07.2005  
 



Danke erstmal für den Hinweis mit der Hilfe , ich habe nur in der Versionhistorie geschaut. Meinen ansonsten funktionierenden Testcode hänge ich hier mal ran. Bitte umbenennen in zip.

5 kB
Hochgeladen:25.07.2005
Ladeanzahl265
Herunterladen
 
25.07.2005  
 




Fernando
Santos
Hallo Sebastian

Habe versucht mit dein Beispiel eine DLL zu erstellen, es wird eine dll mit der grösse von etwa 350KB
generiert und wenn ich versuche das beispielprogramm zu starten erscheint die meldung das die namedll.inc nicht gefunden wird. Ich muss irgendwie etwas falsch machen, oder???

Gruss

Pedro
 
Innovative Produkte für Aufzüge
25.07.2005  
 



Prf2CPP erzeugt beim erzeugen der DLL auch noch eine dazugehörige Includedatei. Diese sollte im selben Verzeichnis liegen wie die PRF welche die Includedatei benötigt. Kopiere die erzeugt Include also in Dein Programmierverzeichnis.

Salve, iF.
 
25.07.2005  
 



Hallo Sebastian,
Code ausserhalb von Proceduren wird der DLLMain() hinzugefügt. Damit kann ich also globale Deklarationen ausführen. Dies entspricht ja in etwa AttachThread(), Jetzt fehlt mir aber das Gegenstück DetachThread() zum automatischen Aufräumen und Speicher freigeben. Auf das was bei FreeDLL passiert habe ich ja sonst keinerlei Einfluß.
Wird vielleicht nur selten gebraucht, jedoch wenn eine Umsetzung keine großen Probleme bereitet wäre es doch schön wenn Du dieses noch einbauen könntest
 
26.07.2005  
 




Sebastian
König
[quote:32e8acf1bc]Hallo Sebastian,
Code ausserhalb von Proceduren wird der DLLMain() hinzugefügt. Damit kann ich also globale Deklarationen ausführen. Dies entspricht ja in etwa AttachThread(), Jetzt fehlt mir aber das Gegenstück DetachThread() zum automatischen Aufräumen und Speicher freigeben. Auf das was bei FreeDLL passiert habe ich ja sonst keinerlei Einfluß.
Wird vielleicht nur selten gebraucht, jedoch wenn eine Umsetzung keine großen Probleme bereitet wäre es doch schön wenn Du dieses noch einbauen könntest[/quote:32e8acf1bc]
Hallo Thomas,

stimmt, so etwas wäre wirklich sinnvoll. Mal sehen, wie ich das am besten umsetze... was hältst Du von einer Art CleanUp-Prozedur, welche - wenn vorhanden - automatisch beim Entladen der DLL aufgerufen wird?

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
27.07.2005  
 



Hallo Sebastian,
genau soetwas meine Ich. Vielleicht sollte auch die Main optinal in eine DLLProc gelegt werden können (wegen der Übersichtlichkeit). Z.B.:
DLLProc DLL_Init,0
DLLProc DLL_End,0

Müßte dann noch drauf hingewiesen werden, das diese Funktionen automatisch ausgeführt werden und nicht aufgerufen werden können.

Wäre toll wenn Du das in irgendeiner Form integrieren könntest
 
27.07.2005  
 




Sebastian
König
[quote:ea11fb37e0]genau soetwas meine Ich. Vielleicht sollte auch die Main optinal in eine DLLProc gelegt werden können (wegen der Übersichtlichkeit). Z.B.:
DLLProc DLL_Init,0
DLLProc DLL_End,0

Müßte dann noch drauf hingewiesen werden, das diese Funktionen automatisch ausgeführt werden und nicht aufgerufen werden können.

Wäre toll wenn Du das in irgendeiner Form integrieren könntest[/quote:ea11fb37e0]
Hallo Thomas,

ich überlege noch, wie ich das am besten löse... Eins so, das andere so gefällt mir auch nicht - aber zwei verschiedene Möglichkeiten zur Initalisierung sind eher verwirrend, denke ich.

Irgendwie bietet sich der Bereich des Hauptprogramms auch wirklich an... Meine favorisierte Idee ist deshalb im Moment, beides an der gleichen Stelle unterzubringen und das Hauptprogramm beim Laden und Entladen der DLL aufzurufen. Zur Unterscheidung würde ich dann eine neue Profan2Cpp-spezifische Systemvariabele einführen. So könnte das dann aussehen:
Was hältst Du (und wer sonst mitliest ) davon?

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
27.07.2005  
 



@Sebastian: Mache es wie es am Reibungslosesten abläuft.

Im Endeffekt behaupte ich ist es egal wie das ganze gehandelt wird.

Ich würde warscheinlich einfach festlegen: Wenn eine DLL exportiert werden soll - so müssen folgende 2 Prozeduren im Quelltext vorhanden sein. dllproc DllInit und dllproc dllexit. Also eine Ein- und Ausstiegsprozedur. Wie Du das dann intern regelst sollte in den Bereich Deiner Erfahrung fallen - womit Du entscheidest was am besten funktioniert.

Salve, iF.
 
27.07.2005  
 



DLLCode ausserhalb von Prozeduren empfinde ich auch eher als unüblich. Ich schließe mich erstmal iFs Vorschlag an, obwohl im Endeffekt ist mir die Syntax nicht so wichtig, nur die Möglichkeit zählt
 
27.07.2005  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.538 Betrachtungen

Unbenanntvor 0 min.
PETER195606.09.2015
gerd27.10.2013
liveFamilie06.06.2012
funkheld29.03.2012
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie