AGB  ·  Datenschutz  ·  Impressum  







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

Delphi-DLL in C++ benutzen

Ein Thema von MaxDelphi · begonnen am 7. Jul 2011 · letzter Beitrag vom 7. Jul 2011
Antwort Antwort
MaxDelphi

Registriert seit: 29. Jun 2009
17 Beiträge
 
#1

AW: Delphi-DLL in C++ benutzen

  Alt 7. Jul 2011, 10:59
Erstmal Danke für die schnelle Antwort.

@Lucki:
Der Hinweis ist korrekt, als Datendatei lassen sich keine Proceduradressen ermitteln. Aber was sollte man dafür benutzten (ich hab testweise LOAD_IGNORE_CODE_AUTHZ_LEVEL verwendet, damit ging es).

(((Wenn ich LoadLibrary benutzen könnte hätte ich das Problem gar nicht!)))
Ich werd verrückt jetzt geht auch LoadLibrary! Ich hab gestern den ganzen Tag gesucht und ursprünglich mit
Code:
DllInstance = LoadLibrary((wchar_t *)"D:\CPP\Sandkasten\Test\CEH_IPC.dll");
gearbeitet, nach einiger Recherche im Internet dann mit
Code:
DllInstance = LoadLibraryEx(dllToLoad,NULL,LOAD_LIBRARY_AS_DATAFILE);
gearbeitet und nicht mehr getestet ob auch
Code:
DllInstance = LoadLibrary(dllToLoad);
geht. Der ursprüngliche Fehler lag also in der Typumwandlung.

Also das erste Problem scheint gelöst zu sein.

@blauweis:
Deinen Hinweis werd ich nicht weiterverfolgen (siehe oben).

Bleibt die Fragestellung:
- Wenn ich eine DLL weitergeben will und der andere eine LIB- und eine Header-Datei braucht. Wie kann ich die erzeugen und auf die Schnelle mal in C++Builder testen?
MfG,
MaxDelphi
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#2

AW: Delphi-DLL in C++ benutzen

  Alt 7. Jul 2011, 11:21
- Wenn ich eine DLL weitergeben will und der andere eine LIB- und eine Header-Datei braucht. Wie kann ich die erzeugen und auf die Schnelle mal in C++Builder testen?
LIB-Dateien für den C++ Builder laufen nicht unbedingt mit anderen Compilern. Beim C++ Builder ist mit Coff2Omf ein Tool, das aus dem Visual C++ Format konvertieren kann. Aber meines Wissens nach nicht in die andere Richtung.
  Mit Zitat antworten Zitat
MaxDelphi

Registriert seit: 29. Jun 2009
17 Beiträge
 
#3

AW: Delphi-DLL in C++ benutzen

  Alt 7. Jul 2011, 12:21
@Robotiker:
Ich war scheinbar nicht exakt genug! Ich meinte: Eine DLL mit Delphi erstellen und (am besten nebenbei über Projektoptionen??? oder änlilches) beim Kompilieren/Linken die LIB- und Header-Datei erzeugen. Oder wenn das nicht geht ein Tool das diese Aufgabe übernimmt und eine entsprechende Beschreibung.

Für die Header-Datei könnte ich mir ein Übersetzungs-Tool vorstellen ähnlich headconv von Dr. Bob nur von Pascal nach C.

Ich habe bereits implib und impdef ausprobiert. implib bricht mit einer Fehlermeldung ab, erzeugt aber eine Lib-Datei. Hier fehlt mir wieder die Möglichkeit zu testen ob sie funktioniert. Kann sein das implib die Lib-Datei korrekt erzeugt hat und erst danach abbricht aber genau weiß ich das nicht.

Fehlermeldung von implib:
Implib funktioniert nicht mehr
Windows kann online nach ....
Details:
Problemsignatur:
Problemereignisname: APPCRASH
Anwendungsname: implib.exe
Anwendungsversion: 3.2.0.0
Anwendungszeitstempel: 00000000
Fehlermodulname: implib.exe
Fehlermodulversion: 3.2.0.0
Fehlermodulzeitstempel: 00000000
Ausnahmecode: c0000005
Ausnahmeoffset: 00013887
Betriebsystemversion: 6.1.7601.2.1.0.256.48
Gebietsschema-ID: 1031
Zusatzinformation 1: d893
Zusatzinformation 2: d8933a9100d220db76612cd68cf270ed
Zusatzinformation 3: 712b
Zusatzinformation 4: 712bad326e73717ee07100af4c008660

Lesen Sie unsere Datenschutzbestimmungen online:
http://go.microsoft.com/fwlink/?link...8&clcid=0x0407

Wenn die Onlinedatenschutzbestimmungen nicht verfügbar sind, lesen Sie unsere Datenschutzbestimmungen offline:
C:\windows\system32\de-DE\erofflps.txt


Bitte beachtet ich benutze Win7Pro(x64).
MfG,
MaxDelphi
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#4

AW: Delphi-DLL in C++ benutzen

  Alt 7. Jul 2011, 12:37
implib bricht mit einer Fehlermeldung ab, erzeugt aber eine Lib-Datei.
Eine Lib-Datei im Format des C++ Builders, die andere Compiler nicht lesen können.

Eine DLL mit Delphi erstellen und (am besten nebenbei über Projektoptionen??? oder änlilches) beim Kompilieren/Linken die LIB- und Header-Datei erzeugen.
Ich kenne den Compiler von LabWindows/CVI nicht, falls der kompatibel zu VC ist, könntest Du in der Tat beim Erzeugen des Delphi Projektes den Lib.exe von Visual C++ als Post-Build-Step aufrufen. Ob Lib.exe allerdings Delphi-DLLs verdaut, kann ich nicht sagen.

Das einzige Tool, das ich kenne, das Headerdateien aus *.pas Dateien erzeugt, ist der C++ Builder. Wenn man einem C++ Projekt eine Delphi Unit hinzufügt, baut er sich beim Übersetzen eine *.hpp Datei dafür. Die ist aber dafür gedacht die Unit aus einer Builder Anwendung zu nutzen, nicht um Dll-Exporte zu erzeugen.

Schreibt Dir doch selber ein Tool, das aus den Signaturen der Delphi-Funktionen die entsprechenden C-Header Einträge generiert und Code mit GetProcAddress-Aufrufen erzeugt. Dann kannst du auf die Lib-Dateien verzichten.
  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 06:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz