PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aufruf auf C-Library von C++ DLL


mekakic
2010-12-10, 14:06:11
Ich wundere mich gerade, denn ich versuche eine C-library in einem C++ Projekt aufzurufen. Ich konnte mit Visual Studio die C-Lib bauen, habe Zugriff auf die Header und mache einen Call auf eine ganz einfache Funktion. Trotzdem die statische C-Lib vom Linker an die Ausgabedatei (C++ DLL) gebunden werden soll, bekomme ich immer einen ganz normalen Linker Error (LNK2019) als hätte ich vergessen die Lib einzubinden. Die Funktion löst einen "unresolved external" Fehler für sich aus.

Hat es evtl. damit etwas zu tun, dass das eine eben eine C-Lib ist und das andere eine C++-DLL. Muß man da etwas beachten? Bei dem einen Projekt ist die Codegenerierung auf "Multithreaded Debug DLL" und bei der C-Lib auf "Singlethreaded Debug". Oder wo kann sonst der Fehler sein?

mekakic
2010-12-10, 14:24:11
Die Antwort hieß fürs erste:

extern "C"
{
#include "clib.h"
}

Ectoplasma
2010-12-11, 12:32:48
Die Antwort hieß fürs erste:
..

Ja und hast du jetzt noch eine Frage oder was soll "fürs erste" heißen?

mekakic
2010-12-20, 10:47:35
Nee, es funktioniert ... danke. "Fürs Erste" hieß, dass es jetzt kompiliert. Ich hatte aber noch keine Tests mit de rLib gemacht, ob evtl. sonst noch was zu beachten ist. Bisher sieht's aber gut aus.

Coda
2010-12-20, 14:56:00
extern "C" ist korrekt. Die meisten C-Libraries machen das aber eigentlich selber in ihren Headern, wenn sie von einem C++ Compiler eingebunden werden.

Der Grund dafür, dass das nötig ist, ist das C++ die Namen normalerweise anders für den Linker "dekoriert" als C.