Port.dll mit DEV Compiler benutzen



  • Hallo,

    ich hoffe von Euch kann mir jemand helfen. Ich habe mir das Buch
    PC Schnittstellen unter Windows gekauft, dort wird mit einer DLL Datei
    Port.dll gearbeitet. In diesem Buch wird allerdings nur die Verwendung
    dieser Datei mit Visual Basic und Delphi beschrieben. Ich möchte diese
    DLL Datei und ihre Funktionen mit dem DEV Compiler verwenden.

    Wie kann ich die Port.dll Datei in einem C-Programm mit dem DEV Compiler
    geschrieben benutzen, so das ich die Beispiele in dem Buch nachvollziehen
    kann?

    mit freundlichen Grüßen und besten Dank Martin Jahreis



  • MartinRedhill3 schrieb:

    Wie kann ich die Port.dll Datei in einem C-Programm mit dem DEV Compiler
    geschrieben benutzen, so das ich die Beispiele in dem Buch nachvollziehen
    kann?

    Was ist ein DEV Compiler?



  • Schmeiss den VB Code weg und schau' Dir Delphi an. Das ist wesentlich ähnlicher zu C.
    Dann lookst Du die Befehle in der MSDN up und nutzt sie entsprechend in C.



  • Sgt. Nukem schrieb:

    ... lookst ... up

    LOL 🤡

    SCNR



  • ProgChild schrieb:

    MartinRedhill3 schrieb:

    Wie kann ich die Port.dll Datei in einem C-Programm mit dem DEV Compiler
    geschrieben benutzen, so das ich die Beispiele in dem Buch nachvollziehen
    kann?

    Was ist ein DEV Compiler?

    DEV ist ein C++ Compiler der Firma Bloodsheed, er ist kostenlos im
    Internet verfügbar, er ist einfach aufgebaut und ich komme damit
    als Einsteiger gut zurecht.



  • Dann lookst Du die Befehle in der MSDN up und nutzt sie entsprechend in C.[/quote]

    Der Delphi Code ist im Buch des Elektor Verlags abgedruckt.
    Aber was ist der MSDN und wie funktioniert er?
    Ich will eingentlich bei der Deklaration meiner C Programme die
    DLL-Datei Port.dll so mit einbinden, das ich die Funktionen in dieser
    Datei im Programm aufrufen kann.



  • MartinRedhill3 schrieb:

    DEV ist ein C++ Compiler der Firma Bloodsheed, er ist kostenlos im
    Internet verfügbar, er ist einfach aufgebaut und ich komme damit
    als Einsteiger gut zurecht.

    LOL... Wow... Echt? 😃

    Mal ein Zitat von www.bloodshed.net

    www.bloodshed.net schrieb:

    Bloodshed Dev-C++ is a full-featured Integrated Development Environment

    Das mit dem Compiler muss ich wohl überlesen haben!!

    So jetzt mal im Ernst...
    Du meist Dev-C++. Es gibt keinen DEV Compiler. Dev-C++ ist auch kein Compiler sondern eine IDE.

    Der Compiler, der mit Dev-C++ ausgeliefert wird, ist der GCC (MinGW). Mal so nebenbei; Bloodshed ist keine Firma.

    Nun zu deinem Problem. Wechsel mit der Console in das Verzeichniss mit der DLL. Dann gibst du folgendes ein (du musst das bin Verzeichniss von MinGW in deiner Pfadvariable eingetragen haben):

    pexports Port.dll > tmp.def
    

    gefolgt von

    dlltool --dllname Port.dll --def tmp.def --output-lib libPort.a
    

    Die Datei libPort.a kopierst du in den Lib Ordner vom MinGW. Damit hast du eine import Bibliothek, die du mit der Linkeroption -lPort benutzten kannst. Unter Umständen musst du dir noch ein Headerfile generieren. Dazu schaust du entweder in die tmp.def Datei oder in die Dokumentation zu der DLL.



  • Hallo,

    tut mir leid, ich blick da nicht durch! Was ist mit Console gemeint?
    Für mich sind das alles böhmische Dörfer!

    Ich bin Elektroniker und beileibe noch kein richtiger Programmierer,
    ich möchte ein paar Ideen in die Tat umsetzten und dazu die
    Schnittstellen des PC´s nutzen.

    Ich habe im Internet eine Dokumentation zu der Port.dll gefunden,
    dort wird als Beispiel ein C++ Code angegeben, den habe ich in meine
    DEV-C++ IDE eingegeben, habe aber nur Fehlermeldungen geerntet.

    Hier ist der Code:

    typedef BYTE (CALLBACK* LPFNDLLFUNC)(WORD);

    HINSTANCE hPortDLL;
    LPFNDLLFUNC lpfnDllFunc;
    char szFuncName[] = "FUNCTIONNAME";
    BYTE uReturnValue;
    WORD wValue;

    hPortDLL = LoadLibrary("port");
    lpfnDllFunc = (LPFNDLLFUNC)GetProcAddress(hPortDLL,szFuncName);
    uReturnValue = lpfnDllFunc(wValue);

    Alle Funktionsnamen sind in Großbuchstaben angegeben, die erste
    Fehlermeldung bezog sich auf CALLBACK.

    Was muss ich tun, damit ich das Beispielprogramm zum laufen bekomme?

    mfg. Martin



  • char szFuncName[] = "FUNCTIONNAME";
    

    FUNCTIONNAME muss der Name der Funktion sein, die du laden und benutzen willst.


Anmelden zum Antworten