Linker-Fehler C++ Visual Studio 2005
Ich bin immer eine ganze Reihe von linker-Fehler in Visual Studio für Methoden bin ich auch nicht direkt aufrufen. Ich bin ein java-Entwickler, durch den Tag, aber ich habe ein Projekt, das ich tun müssen, in C++, soll laufen auf windows-Rechnern. Daher bin ich fest über Unordnung mit Visual Studio.
Bascally, ich habe ein os-Projekt, dass ich eine accessor-Methode. Ich kompilierte das Projekt ein .lib-Datei (kompiliert und links in Ordnung).
Dann habe ich mein eigenes Projekt verwendet, dass lib. Ich habe auch die library unter "Projekt" ->Eigenschaften -> Linker -> Eingang, und legen Sie das entsprechende Verzeichnis in der allgemein -> Zusätzliche Lib-Verzeichnisse. Ich habe den header in der entsprechenden Datei, und ich bin einfach dem Aufruf der Konstruktor von einer der Klassen...auch nicht den Aufruf der Methode, die ich noch erstellt.
Den code kompiliert, aber ich bekomme die folgende Berg von linker-Fehler-meist LNK2019 und LNK2001 Fehler. Ich habe versucht neu zu kompilieren unter verschiedenen Einstellungen (lib, exe, etc.), und der linker-Fehler nur zu vermehren scheinen. Wenn ich wechseln Sie zurück zu den vorherigen Einstellungen, die Anzahl der Fehler bleiben auf Ihrem Höhepunkt. Irgendwelche Ideen, wie man dieses Problem beheben?
Build Log
Erstellen gestartet: Projekt: SpamCapture, Konfiguration: Debug|Win32 -
Befehlszeilen:
Erstellen der temporären Datei "c:\SpamCapture\SpamCapture\SpamCapture\Debug\RSP0000103081740.rsp" mit dem Inhalt
[
/VERBOSE:LIB /OUT:"C:\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.exe" /INCREMENTAL /LIBPATH:"C:\SpamCapture\Config\Debug\" /MANIFEST /MANIFESTFILE:"Debug\SpamCapture.exe.Mittelstufe.manifest" /NODEFAULTLIB:"libcmtd.lib" /NODEFAULTLIB:"nafxcwd.lib" /DEBUG /PDB:"c:\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 KeyCapture_Config.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib".\Debug\ - Interaktion.obj"
".\Debug\InteractionSet.obj"
".\Debug\Protokollleser.obj"
".\Debug\SpamCapture.obj"
".\Debug\stdafx.obj"
".\Debug\SpamCapture.res"
".\Debug\SpamCapture.exe.einbetten.manifest.res"
]
Creating command line "link.exe @c:\SpamCapture\SpamCapture\SpamCapture\Debug\RSP0000103081740.rsp /NOLOGO /ERRORREPORT:PROMPT"
Ausgabe-Fenster:
Verknüpfung...
LINK : Warnung LNK4067: mehrdeutige Einstiegspunkt; selected 'mainCRTStartup'
Suche Bibliotheken
Suche C:\SpamCapture\Config\Debug\KeyCapture_Config.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\kernel32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winspool.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\msvcprtd.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\MSVCRTD.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfc80ud.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfcs80ud.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\msimg32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\setzt.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\atlsd.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\wininet.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ws2_32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\mswsock.lib:
Suche C:\SpamCapture\Config\Debug\KeyCapture_Config.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\kernel32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winspool.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\msvcprtd.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\MSVCRTD.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfc80ud.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfcs80ud.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\msimg32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\setzt.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\atlsd.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\wininet.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ws2_32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\mswsock.lib:
Suche C:\SpamCapture\Config\Debug\KeyCapture_Config.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\kernel32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winspool.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib:
Suche C:\Program Files\Microsoft Visual Studio 8\VC\lib\msvcprtd.lib:
Die Suche abgeschlossen Bibliotheken
Linker-Fehler starten Sie hier:
KeyCapture_Config.lib(KeyCapture_ConfigDlg.obj) : error LNK2001: nicht aufgelöstes externes
symbol "public: virtual int __thiscall CWnd::Create(char const *,char const *,unsigned
long,struct tagRECT const &,class CWnd *,unsigned int,struct CCreateContext *)"
(?Erstellen@CWnd@@UAEHPBD0KABUtagRECT@@PAV1@IPAUCCreateContext@@@Z)
... ein paar mehr wie dieses
KeyCapture_Config.lib(KeyCapture_ConfigDlg.obj) : error LNK2019: nicht aufgelöstes externes
symbol "public: struct HICON__ * thiscall CWinApp::LoadIconA(unsigned int)const"
(?LoadIconA@CWinApp@@QBEPAUHICON@@I@Z), verwiesen in Funktion "public: __thiscall
CKeyCapture_ConfigDlg::CKeyCapture_ConfigDlg(class CWnd *)"
(??0CKeyCapture_ConfigDlg@@QAE@PAVCWnd@@@Z)
...ein paar mehr wie dieses
(?DoDataExchange@SetupDialog@@MAEXPAVCDataExchange@@@Z)
C:\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.exe : fatal error LNK1120: 34 nicht aufgelöste externe Verweise
Ergebnisse:
Build-Protokoll wurde gespeichert "file://c:\SpamCapture\SpamCapture\SpamCapture\Debug\BuildLog.htm"
SpamCapture - 44 error(s), 1 warning(s)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Bibliothek
KeyCapture_Config.lib
ist mit der MFC-GUI-Klassen (CWnd
,CWinApp
usw), aber die Anwendung, die Sie verknüpfen, Sie in eine console-Anwendung (siehe die/SUBSYSTEM:CONSOLE
option in der linker-Befehlszeile). Das wird nicht funktionieren. Erstellen Sie eine neue MFC-GUI-Anwendung-Projekt, und fügen Sie die Bibliothek zu diesem Projekt.Edit: ich habe gerade überprüft den link in deinem Kommentar: http://dynamicnetservices.com/~will/academic/textinput/keycapture/ und es scheint, dass KeyCapture_Config ist eigentlich eine MFC-Dialogfeld-Anwendung verwendet, die KeyCapture DLL. Es kann möglich sein, verwenden Sie KeyCapture in einer Konsole-Anwendung durch die Verknüpfung direkt gegen
KeyCapture.lib
.Den link Fehler zu sein scheinen, beschweren sich über den Mangel an eine Menge MFC-Funktionen, und Sie link-Zeilen enthält: /NODEFAULTLIB:"nafxcwd.lib", die ausschließen würde, MFC. Ist die lib die Sie verlinken, gegen gebaut mit MFC?
Andere Dinge zu prüfen sind, die Sie kompilieren der app und die lib mit dem gleichen Zeichensatz (ie. sowohl mehr-Byte oder unicode).
Wenn Ihr baut eine lib gibt es keine link-Schritt, also eine beliebige Sammlung von Objekten, die ausgelöst werden können, in eine lib ohne Rücksicht darauf, was Sie sonst noch brauchen könnte.
Sieht es aus wie Ihr Projekt, ist die Verknüpfung mit der Debug Multithreaded runtime. Ist das deine Absicht? Wenn ja, kann es sein, Inkonsistenzen mit der KeyCapture_Config Bibliothek, die Sie zu sein scheinen mit.
Ist KeyCapture_Config ein 3rd-party-Bibliothek? Wenn ja, haben Sie es von der Quelle oder wurde die lib/dll zur Verfügung für Sie?
Es kann nur nehmen einige Untersuchungen, auf die C/C++ runtimes werden gebaut gegen. Sie können auf den Microsoft KB-Artikel, die helfen könnten, etwas Licht auf die mögliche Laufzeit bauen Unstimmigkeiten.
Ich denke, dass Rob Walker hat genagelt das problem. Wenn die Dokumentation für KeyCapture_Config.lib sagt keine Verknüpfung zur MFC, überprüfen Sie die Quelle für die Richtlinien, die erfordern, dass die Verlinkung zu MFC. So etwas wie dieses:
führen zu einer Abhängigkeit, die auf MFC, und die KeyCapture_Config.lib doc können veraltet sein.