[Link Error: 2001] Static lib
-
Wir versuchen gerade eine Editor für ein Spiel zu schreiben und müssen deshalb eine Lib von dem Spiel machen und diese wird dann im Editor geladen.
Das Compilieren funktioniert soweit bis auf einen Link Error.
Im Projekt ist der Pfad zur Lib angegeben und auch der Include Ordner ist eingetragen. Ich habs mit und ohne WINAPI probiert der Error bleibt jedoch.
Betriebssystem: Windows 7 64Bit
Visual Studio 2010Hier mal der Code:
#include "pch.h" Application* g_pApp = NULL; INT WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPSTR lpCmdLine, __in int nShowCmd ) { BlocoApp blocoApp(&g_pApp); // start engine Editor mainForm; if(!g_pApp->Init(L"editor", 1600, 900, true, NULL, mainForm.GetEngineHWND())) { g_pApp->Exit(); return 1; } // main loop DXUTMainLoop(); g_pApp->Exit(); return 0; }Compiler Error:
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: bool __thiscall Application::Init(class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short>
-
Projekteigenschaften -> Linker -> Eingabe -> Zusätzliche Abhängigkeiten -> MeineLibrary.lib
eintragen.Oder:
#pragma comment(lib, "MeineLibrary")
Ihr müsst dem Compiler quasi auf die eine oder andre Art vermitteln, dass er die Library laden soll. Die Library-Pfade sagen ihm nur falls er eine öffnen soll, wo er sie zu suchen hat.
-
Mit "Pfad zur Lib is im Proj angegeben" habe ich mich etwas falsch ausgedrückt.^^
Das 'pragma comment' ist in der pch.h Datei
-
Ich habe nun ein ein paar andere Funtkionen getestet. Es funktionieren nur die Funktione die in der direkt in der Header Datei definiert sind und bei denen die in der jeweiligen .cpp definiert sind erscheind ein Link Error.
Man muss doch nicht die .cpp Datein zum Proj hinzufügen, dafür ist doch die Lib oder??
-
Auch schon die erste Möglichkeit versucht,
die über die Einstellungen?Soweit ich weiß ja.
-
Ja auch damit bekomme ich den selben Link Error -.-
-
Passen die Header vllt nicht mehr mit der Lib zusammen - Header aktualisiert, mit alter Library-Version?
Ansonsten gehn mir langsam die Ideen aus.. :p
-
Hab ich auch bereits getestet indem ich im header eine neue Func erstellt habe und diese dann im Editor getestet. Wenn ich den FunctionsCode im Header lasse lässt es sich compilieren jedoch sobald ich es in die cpp Datei verschiebe entstehen die Link Errors. Was eigentlich klar ist da ich den Header Pfad angebe und so die Lib eigentlich nicht benötigt wird)
Kann vl. der Aufbau wie die Header un Cpp Datein gelinkt werden falsch sein?Wir haben eine Header (bloco.h), welche die gesamten Header included.
Header bsp.:
#ifndef _ClassA_H #define _ClassA_H include<bloco.h> class x { HRESULT Init( void* data); }; #endifDazugehörige CPP:
#include<bloco.h> HRESULT x::Init(void * data) { return S_OK; }