error LNK2019: unresolved external symbol
-
Hallo,
ich werd nicht schlau draus...
habe eine .lib, die Methoden einer .dll verwenden soll, spuckt mir nur leider folgenden Fehler aus:
error LNK2019: unresolved external symbol "public: __thiscall Core::Core(void)" (??0Core@@QAE@XZ) referenced in function "public: __thiscall Control::Control(void)" (??0Control@@QAE@XZ)Control.cpp -> .lib
#include "Control.h" #include "..\\Core\Core.h" Control::Control() { Core* c = new Core(); } Control::~Control(){}
Core.h -> .dll
#pragma once using namespace std; class Core { public: Core(); ~Core(); };
Core.cpp -> .dll
#include "stdafx.h" #include "Core.h" Core::Core(){} Core::~Core(){}
Wenn ich allerdings die Definition (Core) in die .h packe funktioniert es.
Bin um jede Hilfe dankbar!Gruß
Fexis
-
Hast du denn die Core.cpp bei deinem DLL-Projekt mitkompiliert?
-
Es sind halt 2 Projekte, wobei erst der Core, dann das Control kompiliert wird
-
1. *.lib dazulinken (z.B. durch
#pragma comment (lib, "Core.lib")
)
2. dllexport /dllimport o.ä. benutzen (http://msdn.microsoft.com/en-us/library/z4zxe9k8.aspx)
-
1. Ich hab aber nur eine Core.dll xD
2. Warum funktioniert es dann, sobald ich die gesamte Definition, die in der .cpp steht, die .h packe ?
-
1. Ohne lib wird es schwierig - und eheer unkonventionell.
2. Es funktioniert, weil die Definition dann beim kompilieren des zweiten Projekt vorliegt (in dem Header).
-
leuchtet ein, danke