Frage

Ich erhalte eine ganze Reihe von Linker-Fehler in Visual Studio für Methoden bin ich nicht einmal direkt aufrufen. Ich bin ein Java-Entwickler für Tag, aber ich habe ein Projekt, das ich in C ++ tun muß, sollte auf Windows-Rechnern laufen. Daher bin ich über mit Visual Studio stecken in Unordnung.

Bascally, ich habe ein OS-Projekt, das ich eine Accessor-Methode hinzugefügt. Ich kompiliert das Projekt als eine LIB-Datei (kompiliert und verknüpft in Ordnung).

ich dann mein eigenes Projekt, das dem lib verwendet. > Linker - - Ich habe die Bibliothek unter Project-> Eigenschaften enthalten> Input, und setzen Sie das entsprechende Verzeichnis im Allgemein -> Weitere Lib-Verzeichnisse. Ich habe den Header in der entsprechenden Datei enthalten, und ich bin einfach den Konstruktor von einer der Klassen aufrufen ... nicht einmal die Methode aufrufen, die ich noch erstellt.

Der Code kompiliert, aber ich habe den folgenden Berg von Linkerfehler - meist LNK2019 und LNK2001 Fehler. Ich habe versucht, unter verschiedenen Einstellungen neu zu kompilieren (lib, exe, etc.), und die Linkerfehler scheinen nur zu multiplizieren. Wenn ich auf die vorherigen Einstellungen zurückzuschalten, bleibt die Anzahl der Fehler auf ihrem Höhepunkt. Irgendwelche Ideen, wie dieses Problem beheben?

Build Log

  

Build gestartet: Projekt: SpamCapture, Konfiguration: Debug | Win32

Befehlszeilen:

  

Erstellen von temporärer Datei "c: \ SpamCapture \ SpamCapture \ SpamCapture \ Debug \ RSP0000103081740.rsp" mit Inhalt   [   / VERBOSE: LIB /OUT:"C:\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.exe“/ Inkremental / LIBPATH: "C: \ SpamCapture \ Config \ Debug \"/ MANIFEST /MANIFESTFILE:"Debug\SpamCapture.exe .intermediate.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 \ Interaction.obj"

     

"\ Debug \ InteractionSet.obj"

     

"\ Debug \ LogReader.obj"

     

"\ Debug \ SpamCapture.obj"

     

"\ Debug \ stdafx.obj"

     

"\ Debug \ SpamCapture.res"

     

"\ Debug \ SpamCapture.exe.embed.manifest.res"   ]   Erstellen von Befehlszeile "link.exe @c: \ SpamCapture \ SpamCapture \ SpamCapture \ Debug \ RSP0000103081740.rsp / NOLOGO / ERRORREPORT: PROMPT"

Ausgabefenster:

  

Die Verknüpfung ...   LINK: Warnung LNK4067: mehrdeutig Eintrittspunkt; ausgewählt ‚mainCRTStartup‘   Suche in Bibliotheken       Suche C: \ SpamCapture \ Config \ Debug \ KeyCapture_Config.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ kernel32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ user32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ gdi32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ winspool.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ comdlg32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ advapi32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ shell32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ Ole32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ Oleaut32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ uuid.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ odbc32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ odbccp32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ MSVCPRTD.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ MSVCRTD.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ OLDNAMES.lib:       Searching C: \Programme \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ mfc80ud.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ mfcs80ud.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ msimg32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ comctl32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ shlwapi.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ atlsd.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ wininet.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ ws2_32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ mswsock.lib:       Suche C: \ SpamCapture \ Config \ Debug \ KeyCapture_Config.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ kernel32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ user32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ gdi32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ winspool.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ comdlg32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ advapi32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ shell32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ Ole32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ Oleaut32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ uuid.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ odbc32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ odbccp32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ MSVCPRTD.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ MSVCRTD.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ OLDNAMES.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ mfc80ud.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ mfcs80ud.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ msimg32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ comctl32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ shlwapi.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ atlsd.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ wininet.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ ws2_32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ mswsock.lib:       Suche C: \ SpamCapture \ Config \ Debug \ KeyCapture_Config.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ kernel32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ user32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ gdi32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ winspool.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ comdlg32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ advapi32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ shell32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ Ole32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ Oleaut32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ uuid.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ odbc32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ odbccp32.lib:       Suche C: \ Programme \ Microsoft Visual Studio 8 \ VC \ lib \ MSVCPRTD.lib:   Suche beendet Bibliotheken

Linker Fehler starten hier:

  

KeyCapture_Config.lib (KeyCapture_ConfigDlg.obj): Fehler LNK2001: extern   Symbol „public: virtual int __thiscall CWnd :: Create (char const *, char const *, ohne Vorzeichen   lang, struct tagRECT const & Klasse CWnd *, unsigned int, struct CCreateContext *)“   (? Create @ CWnd @@ UAEHPBD0KABUtagRECT @@ PAV1 @ IPAUCCreateContext @@@ Z)

... ein paar mehr wie folgt aus

  

KeyCapture_Config.lib (KeyCapture_ConfigDlg.obj): Fehler LNK2019: nicht aufgelöstes externes   Symbol "public: struct HICON__ * Thiscall CWinApp :: LoadIconA (unsigned int) const"   (LoadIconA @ CWinApp @@ QBEPAUHICON @@ I @ Z?) In Funktion referenziert „public: __thiscall   CKeyCapture_ConfigDlg :: CKeyCapture_ConfigDlg (Klasse CWnd *)“   (?? 0CKeyCapture_ConfigDlg @@ QAE @ PAVCWnd @@@ Z)

... ein paar mehr wie folgt aus

  

(? DoDataExchange @ SetupDialog @@ MAEXPAVCDataExchange @@@ Z)   C: \ SpamCapture \ SpamCapture \ SpamCapture \ Debug \ SpamCapture.exe: fataler Fehler LNK1120: 34 nicht aufgelöste externe

Ergebnisse:

  

Build-Protokoll wurde gespeichert "Datei: // c: \ SpamCapture \ SpamCapture \ SpamCapture \ Debug \ BuildLog.htm"   SpamCapture - 44 Fehler (s), 1 Warnung (en)

War es hilfreich?

Lösung

Die Bibliothek KeyCapture_Config.lib wird unter Verwendung von MFC GUI-Klassen (CWnd, CWinApp, etc), aber die Anwendung, die Sie in Verknüpfung sind es ist eine Konsolenanwendung (siehe /SUBSYSTEM:CONSOLE Option in der Linker-Befehlszeile). Das wird nicht funktionieren. Sie sollten ein neues MFC-GUI-Anwendung Projekt erstellen und die Bibliothek zu diesem Projekt hinzufügen.

Edit: Ich habe einfach auf den Link in Ihrem Kommentar geprüft: http: // dynamicnetservices.com/~will/academic/textinput/keycapture/ und es scheint, dass KeyCapture_Config tatsächlich eine MFC-Dialoganwendung ist, die die KeyCapture DLL verwendet. Es kann möglich sein KeyCapture in einer Konsolenanwendung zu verwenden, indem sie direkt gegen KeyCapture.lib verbinden.

Andere Tipps

Der Link Fehler scheint über den Mangel an vielen MFC-Funktionen zu beschweren, und verknüpfen Sie Linien umfasst: /NODEFAULTLIB:"nafxcwd.lib“, die MFC ausschließen würde. Ist das lib Sie verknüpfen gegen gebaut mit MFC?

Andere Dinge zu überprüfen sind, dass Sie die App und die lib mit dem gleichen Zeichensatz kompilieren (dh. Sowohl multibyte oder beide Unicode).

Wenn Sie bauen eine lib es keine Verbindung Schritt ist, so eine willkürliche Sammlung von Objekten können ohne jede Rücksicht in einen lib geworfen werden, was sonst noch brauchen sie.

Es sieht aus wie Ihr Projekt mit der Debug Multithreaded-Laufzeit zu verknüpfen. Ist das Ihre Absicht? Wenn dies der Fall kann es zu Unstimmigkeiten mit der KeyCapture_Config Bibliothek, die Sie scheinen mit werden.

Ist KeyCapture_Config eine 3rd-Party-Bibliothek? Wenn ja haben Sie bauen es von der Quelle oder war die lib / DLL für Sie zur Verfügung gestellt?

Es kann nur eine Untersuchung nehmen, auf dem C / C ++ Runtimes gegen gebaut werden. Sie können verweisen auf die Microsoft KB Artikel , die etwas Licht auf die mögliche Laufzeit zu vergießen Diskrepanzen aufbauen helfen könnte.

Ich denke, dass Rob Walker das Problem genagelt hat. Wenn die Dokumentation für KeyCapture_Config.lib sagt MFC keine Verbindung, überprüfen Sie die Quelle für Richtlinien, die Bindung an MFC erfordern. So etwas wie folgt aus:

#pragma comment(lib, "nafxcwd.lib")

würde eine Abhängigkeit von MFC verursachen und die KeyCapture_Config.lib doc können veraltet sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top