LNK2019 und ich habe keine Ahnung
-
Hallo NG,
ich wende mich an euch, da ich kein Ahnung habe von C++. Ich bin von der VB.Net-Fraktion und komme nicht weiter. Ich brauche dringend jemanden der mir hilft, da ich langsam bekloppt werde.Folgendes Problem:
Ich habe ein AnitVirusTool in mein Programm eingebunden. Hierzu hat mir der Hersteller sein SDK zugesand (vor 2 Jahren). Das waren alles LIB-Dateien. Daraus hat seinerzeit ein Kollege eine DLL erstellt, die auch funktioniert. Nun stelle ich mein Programm um, so dass es als Systemdienst laufen soll und die DLL funktioniert nicht mehr. Die Aussage des Hersteller ist: Neu übersetzen, da eine ander LIB verwendet werden muss.Also habe ich den Quelltext des Kollegen in C++ des Dot.Net 2003 - Frameworks geladen und alle Einstellungen so gemacht, das die Parameter stimmen sollten.
Jetzt bekomme ich immer die folgenden Fehlermeldungen:
avgdll.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"class CAvgSupport * __stdcall CreateAVG6(void)" (?CreateAVG6@@YGPAVCAvgSupport@@XZ)', verwiesen in Funktion '"class CAvgSupport * __stdcall AVG_CreateAvg6Object(void)" (?AVG_CreateAvg6Object@@YGPAVCAvgSupport@@XZ)' avgdll.obj : error LNK2019: Nicht aufgelöstes externes Symbol '_CreateAVG7@4', verwiesen in Funktion '"class CAvgSupport * __stdcall AVG_CreateAvg7Object(void)" (?AVG_CreateAvg7Object@@YGPAVCAvgSupport@@XZ)' Release/avgdll.dll : fatal error LNK1120: 2 unaufgelöste externe VerweiseHier das ganze Projekt mal: http://www.adv-service.de/Avgdll.zip
Kann mir einer sagen, was ich falsch mache oder noch besser das Ding lauffähig machen. Bitte, Bitte ich brauche es um weiter zu kommen.
Vielen Dank für jede Hilfe
Georg
-
Du wirst wohl vergessen haben die Library-Pfad oder -Datei des SDKs angegeben zu haben, in der sich die vermissten Implementierungen befinden. In deinen Projekteinstellungen unter Linker kann man entsprechende Einträge vornehmen. Müsste aber eigenltich in der SDK-Doku drin stehen, was zu tun ist.
-
Nein, das war es nicht. Es hat keine Veränderung gebracht. Die Lib wird auch gefunden und genutzt. Ich habe die Lib testweise umbenannt und der Linker meckert. Die zwei Fehlermeldungen bleiben. Mist!
-
Sieht so aus als wären die .lib files (z.B. avgapi_mtdll.lib) für VC6 oder sowas, und nicht für VC7.1 oder VC8.0.
(Wenn du in die .lib Files reinguckst wirst du da drinnen den String "Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8966.0" finden, und 12.00 ist nunmal VC6)Ausserdem scheinen CreateAVG6 und CreateAVG7 __cdecl zu verwenden und nicht __stdcall.
Weiters solltest IMO du die "Multi-threaded DLL" (/MD) runtime verwenden und nicht die "Multi-threaded" (/MT).
----
Lass dir vom Hersteller ein SDK (.h/.lib Files) für VC7.1 oder VC8.0 schicken, oder verwende VC6.0 um deine DLL zu erstellen.