Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie kann ich eine C++ DLL nutzen? (https://www.delphipraxis.net/132113-wie-kann-ich-eine-c-dll-nutzen.html)

divBy0 6. Apr 2009 13:35


Wie kann ich eine C++ DLL nutzen?
 
Hallo,

also ich würde gerne eine DLL nutzen, die mit C++ erstellt wurde.
Da ich das bisher noch nie gemacht habe wollte ich mal fragen, was man beachten sollte.

Meine ersten Versuche die Funktionen der DLL von einem C#-Wrapper nach Delphi zu portieren, endeten in einer Schutzverletzung.

Als Beispiel:

Aus dem C#-Wrapper:

Code:
[DllImport("DMX4ALL.dll")]
public static extern bool CheckPort(int port);

Die Funktion habe ich dann mal so in Delphi übernommen:

Delphi-Quellcode:
interface
  function CheckPort(port: Integer): Boolean; stdcall;

implementation
  function CheckPort(port: Integer): Boolean; stdcall; external 'DMX4ALL.DLL';
Kann mir mal bitte jemand einen Wink in die richtige Richtung geben?

Danke!

Luckie 6. Apr 2009 14:06

Re: Wie kann ich eine C++ DLL nutzen?
 
Wo willst du die DLL jetzt nutzen, in Delphi oder C#?

divBy0 6. Apr 2009 14:08

Re: Wie kann ich eine C++ DLL nutzen?
 
Sorry,

in Delphi will ich die nutzen. Für C# ist eine Wrapper-Klasse dabei.

hoika 6. Apr 2009 14:17

Re: Wie kann ich eine C++ DLL nutzen?
 
Halo,

Ist ja ne richtige c++ DLL, guck sn.

Bsp.-e

Auf der Seite nach DMX4ALL Delphi Sample suchen.


Heiko

divBy0 6. Apr 2009 14:49

Re: Wie kann ich eine C++ DLL nutzen?
 
Na toll, ich hatte beim Hersteller nachgefragt und laut denen gibt es keine Delphi-Version.

hoika 6. Apr 2009 14:51

Re: Wie kann ich eine C++ DLL nutzen?
 
Hallo,

also ich habe einfach mal in google was eingetippt ...


Heiko

divBy0 6. Apr 2009 15:02

Re: Wie kann ich eine C++ DLL nutzen?
 
Das mache ich normalerweiße auch, habe mich hierbei allerdings wirklich nur auf den Hersteller verlassen.

generic 6. Apr 2009 15:22

Re: Wie kann ich eine C++ DLL nutzen?
 
Div was hast du den für ein Projekt vor.

Den Lichttechnik ist auch eines meiner Lieblingsthemen.

http://www.quantendrehung.de/cms/ueb...echniker-jobs/

divBy0 6. Apr 2009 15:36

Re: Wie kann ich eine C++ DLL nutzen?
 
Das soll erst mal eine kleine Steuerung für eine LED-PAR-Matrix werden, vorgesehen sind 8x8 LED-PAR64.
Ist im Moment nur als Spielerei gedacht, ob das für den Bühneneinsatz taugt wird sich dann zeigen.

divBy0 12. Apr 2009 18:58

Re: Wie kann ich eine C++ DLL nutzen?
 
@hoika: Das Beispiel was du gefunden hattest ist leider schon älter und arbeitet mit einer anderen DLL.

Jetzt habe ich fast alle Funktionen der DLL in meiner Unit fertig. Allerdings habe ich eine Frage zu einem Record.

In der C-Header-Datei ist folgendes implementiert:

Code:
typedef struct structVersionInfoStruct
{
   char      InterfaceInfo[500];
   DWORD      HW_Version;
   DWORD      NrOfDmxData;
   BOOL      SignalOutput;
   BYTE      MergeMode;
   WORD      MergeStart;
   WORD      MergeStop;
} VERSION_INFO;

Meine Anpassung sieht so aus:

Delphi-Quellcode:
type TVersionInfo = record
  InterfaceInfo: Array[0..499] of Char;
  HW_Version:    DWORD;
  NrOfDmxData:   DWORD;
  SignalOutput:  Boolean;
  MergeMode:     Byte;
  MergeStart:    WORD;
  MergeStop:     WORD;
end;
Ist die Definition von InterfaceInfo als Array of Char so richtig?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr.
Seite 1 von 2  1 2      

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