*.dll in C-Code einbinden?

Hallo,
ich habe folgendes Problem:

Ich möchte ein bestehendes *.dll ( in C geschrieben) in einer anderen
*.c einbinden. Nun ich weiss es nicht, wie es geht. Wenn jemand eine Vorschlag hat, werde ich dankbar.
mfg. Selcuk

Selcuk,

eine dll kannst du nicht in ein C Programm einbinden.

Was du zunächst brauchst ist eine header-Datei, in der die Funktionen der dll deklariert sind, damit der Compiler nicht moeckert.

Dann brauchst du eine lib zu der dll, gegen die du linkst. Da werden dann die dem Compiler noch unbekannten Funktionen aufgelöst.

Wenn du das Programm dann laufen lässt, wird die dll zu dem Programm geladen.

/Dirk

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Dirk;
Könntest du mir bitte einen kleinen Beispiel schicken! Wie stehen headerdatei und dll datei zueinender in Beziehung? mus ich in hederdatei die funktionen von dll implementieren oder einfach den deklarationtel der Funktionen angeben?? da ich eine schnittstelle zw. dll und ein simulink s-function schaffen möchte, möchte es so schaffen, so dass ich nicht bei möglichen Änderung an dll meine Schnittstelle auch ändern muss???
danke

mfg. Selcuk

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Vielleicht solltest du dich doch noch mal mit einem C Buch beschäftigen, die dir einige Grundlagen erklären.

In einer Header-Datei steht bloss die Signatur der Funktion:

  • Name
  • Parameter
  • Rückgabewert

Die wird üblicherweise mit #include eingebunden.

/Dirk

Nachdem du ja sehr hilfreiche Antworten bekommen hast, ein kleines Beispiel.

MfG
Heiko Biegler

/* Programm Beispiel test.c */
#include

#define THE_DLL „Beispiel.DLL“

HINSTANCE hDLL;

typedef unsigned __int16 word;

/* Hier wir eine dll Funktion bekannt gemacht */
portinit(void)
{
typedef UINT (CALLBACK* LPINT)();
LPINT p;
p = (LPINT)GetProcAddress(hDLL,„PORTINIT“);
return p();
}
/* Ebenso*/
inport(word Addr)
{
typedef UINT (CALLBACK* LPINT)(word);
LPINT p;
p = (LPINT)GetProcAddress(hDLL,„INPORT“);
return p(Addr);
}

void main(void)
{
int in;
int addr = 0x3f8;

hDLL = LoadLibrary(THE_DLL);
if (hDLL == NULL)
{
/*Fehler beim oeffnen von*/
}

portinit();
in = input(addr);

/* fertig? dann schliessen */
FreeLibrary(hDLL);
}
/* Ende von test.c */

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]