VC++ DLL einbinden

hi
ich hab mir demletzt eine zip runtergeladen um mir die arbeit ein bischen zu erleichtern und um zu lernen wie man DLL’s in VC++ 6.0 verwendet :smile:
in der zip hab ich eine DLL eine LIB und ein paar header dateien + beschreibung der funktionen
ich hab mir gedacht es würde reichen wenn ich einfach die headerdateien include und dann die funktionen aufrufe aber leider hagelts erst mal syntaxfehler in den headerdateien

BOOL WINAPI (char *a, char *b);

ist z.B. eine der API deklarationen
warum das nicht funktioniert kann ich mit meinem minimal wissen über C++ leider nicht nachvollziehn!?
ich nehm die deklaration und probier (in einer test cpp) ein bischen damit rum bis der compiler nicht mehr meckert

bool (char *a, char *b);

aber jetzt kommt der linker mit „LNK2001: Nichtaufgeloestes externes Symbol“ klar schliesslich kann er ja nicht wissen welche DLL ich meine :wink:

lange rede kurzer sinn mit welchem befehl kann ich eine DLL und ihre funktionen einbinden (mit „__declspec(dllimport)“ hatte ich keinen erfolg)

hoffe es kann mir jemand helfen
DANKE im vorraus :smile:

also ich hab zwar mit dll’s auch noch nicht sehr viel gearbeitet, aber bei mit hats bis jetzt immer so funktioniert:

  1. die dll muß ins windows verzeichnis für dlls:
    win9x = c:\windows\system
    winnt = c:\windows\sysmte32

  2. dein projekt mit VC aufmachen
    Extras->Optionen->Verzeichnisse
    Dort unter Include-Dateien den Pfad zu den Header dateien eintragen
    und unter Bibliotekdateien den Pfad zu der lib datei eintragen

  3. Projekt->Einstellungen->Linker
    Dort unter Objekt-/Bibliothekmodule den Dateinamen der
    Lib-Datei eingeben

Anmerkung:
Zum Kompilieren wird die DLL ja nich benötigt, sagt ja schon der Name „Dynamic Link Library“, die wird erst beim start geladen. Die Lib-Datei enthält gewissermaßen den Bauplan der DLL, damit der Linker weiß welche Funktionen in der dll vorhanden sind

mfg
Robert

  1. die dll muß ins windows verzeichnis für dlls:
    win9x = c:\windows\system
    winnt = c:\windows\sysmte32

  2. dein projekt mit VC aufmachen
    Extras->Optionen->Verzeichnisse
    Dort unter Include-Dateien den Pfad zu den Header dateien
    eintragen
    und unter Bibliotekdateien den Pfad zu der lib datei
    eintragen

  3. Projekt->Einstellungen->Linker
    Dort unter Objekt-/Bibliothekmodule den Dateinamen der
    Lib-Datei eingeben

also ich hab jetzt alles so gemacht wie beschrieben leider ändert sich nichts :frowning:
ich hab nach wie vor das problem das der compiler entweder das BOOL WINAPI… nicht versteht
oder das wenn ich meine selbstkreirte deklaration verwende der linker die funktion nicht findet

deswegen nehme ich an das es an der deklaration liegt könntest du oder jemand anders mir vielleicht ein kleines beispiel mit einer Win9x API geben? z.B. „sleep“ (nur deklaration und funktionsaufruf) :smile:
oder müssten die deklarationen so stimmen??

TIA

Verständnisfrage
was mir gefehlt hat war offenbar nur das "#include "
aber warum? was steht in dieser headerdatei bzw. warum brauch ich sie? (es ist nur eine konsolenanwendung) und kann ich das manuell einfügen?
auserdem ist doch die windows.h sicher eine menge quelltext vergrößert oder verlangsamt sich durch das includen mein programm nicht??

was mir gefehlt hat war offenbar nur das "#include
"
aber warum? was steht in dieser headerdatei bzw. warum brauch
ich sie? (es ist nur eine konsolenanwendung) und kann ich das
manuell einfügen?

Die Headerdatei brauchst du, da sie dafür sorgt, dass die Konstante WINAPI definiert wird. Du solltest aber nicht alles auf eigene Faust in dein Programm einbauen nur um ohne die Datei auszukommen, da windows.h eine verlässliche Grundlage darstellt.

auserdem ist doch die windows.h sicher eine menge quelltext
vergrößert oder verlangsamt sich durch das includen mein
programm nicht??

Nein. Es werden hauptsächlich (wahrscheinlich ausschließlich) Konstanten deklariert, die nur für den Compiler wichtig sind, aber auf das fertige Programm, was die Größe angeht, keine Auswirkungen haben.

cu
Klaus

gut das wars was ich wissen wollte
nochmals Danke an beide :smile: