lima-city: Webhosting, Domains und Cloud
1 Pluspunkt 0 Minuspunkte
Wie kann ich mit MinGW und gcc eine DLL Datei erstellen und mit einem weiteren Programm Funktionen daraus aufrufen?
von  

1 Antwort

2 Pluspunkte 0 Minuspunkte

Zuerst setzt du vor jede Funktionsdefinition das Keyword __declspec(dllimport).

#include <stdio.h>

__declspec(dllimport) int myFunc(int a, float b) {

    printf("%d - %f", a, b);
    return 0;

}

Diese kompilierst du zu einer dynamischen Bibliothek (dll).

gcc -c Lib.c -o Lib.o
gcc -shared Lib.o -o Lib.dll

In deinem Programm musst du die Signatur der jeweiligen Funktion angeben. In diesem Fall ein int als Rückgabe und ein int, ein float als Parameter.

typedef int (__cdecl *MYLIBFUNC)(int, float);

Jetzt lädtst du die Datei und rufst die Funktion auf.

HANDLE dll;
MYLIBFUNC fn; 
    
dll = LoadLibrary("Lib.dll");    
fn = (MYLIBFUNC) GetProcAddress(dll, "myFunc");
    
int i = (*fn)(1, 1.5f);
von (718 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.3k Fragen

2.8k Antworten

261 Kommentare

13 Nutzer