Linker findet eine Funktion nicht. (error LNK2028)
-
Hallo,
ich habe ein kleines Problem mit einer Funktion innerhalb einer anderen Klasse.
Bei dem Aufruf
UnitTest_PIN_functions::initPINService();
innerhalb der Klasse UnitTest_PIN_tests.cpp kommt folgender Fehler:
UnitTest_PIN_tests.obj : error LNK2028: unresolved token
Die Funktion ist ja auch nicht in der UnitTest_PIN_tests.obj sondern in UnitTest_PIN_function.obj, nur wie sage ich das meinem Linker?
#include "UnitTest_PIN_functions.h" habe ich in UnitTest_PIN_tests.cpp eingebunden.
VS bietet mir auch den Namen per Autovervollständigung an und mit F12 springe ich dahin.Ich hoffe jemand kann mir helfen diesen Linker Fehler zu beheben.
Danke!
Keks
-
Sind alles CPP Files im Projekt?
Sind ev. externe LIB Files nötig?Simon
-
Ja, es sind alles .cpp files und sie sind alle im gleichen Projekt. Sind auch beide selbst geschrieben, deswegen versteh ich das leider nicht.
Müssen die eigentlich den gleichen namespace haben oder einen unterschiedlichen?
-
Vielleicht nochmal als Zusatz mein Build Log:
Command Lines Creating temporary file "C:\Projekte\XFS_UNIT_TEST\tmp\RSP00000139923064.rsp" with contents [ /OUT:"C:\Projekte\XFS_UNIT_TEST\Debug\XFS_CUnit_Test.dll" /INCREMENTAL:NO /LIBPATH:"C:\ProBase\ProDevice\LIB" /DLL /MANIFEST /MANIFESTFILE:"C:\Projekte\XFS_UNIT_TEST\tmp\XFS_CUnit_Test.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /ASSEMBLYDEBUG /PDB:"C:\Projekte\XFS_UNIT_TEST\Debug\XFS_CUnit_Test.pdb" /DYNAMICBASE /FIXED:No /NXCOMPAT /MACHINE:X86 MSXFS.LIB "..\..\XFS_UNIT_TEST\tmp\AssemblyInfo.obj" "..\..\XFS_UNIT_TEST\tmp\stdafx.obj" "..\..\XFS_UNIT_TEST\tmp\UnitTest_PIN_functions.obj" "..\..\XFS_UNIT_TEST\tmp\UnitTest_PIN_tests.obj" "..\..\XFS_UNIT_TEST\tmp\app.res" ] Creating command line "link.exe @C:\Projekte\XFS_UNIT_TEST\tmp\RSP00000139923064.rsp /NOLOGO /ERRORREPORT:PROMPT" Output Window Linking... UnitTest_PIN_tests.obj : error LNK2028: unresolved token (0A00000E) "public: static void __cdecl UnitTest_PIN_functions::initPINService(void)" (?initPINService@UnitTest_PIN_functions@@$$FSAXXZ) referenced in function "public: static void __clrcall XFS_CUnit_Test::UnitTest_PIN_tests::PINInitialize(class Microsoft::VisualStudio::TestTools::UnitTesting::TestContext)" (?PINInitialize@UnitTest_PIN_tests@XFS_CUnit_Test@@$$FSMXVTestContext@UnitTesting@TestTools@VisualStudio@Microsoft@@@Z) UnitTest_PIN_tests.obj : error LNK2019: unresolved external symbol "public: static void __cdecl UnitTest_PIN_functions::initPINService(void)" (?initPINService@UnitTest_PIN_functions@@$$FSAXXZ) referenced in function "public: static void __clrcall XFS_CUnit_Test::UnitTest_PIN_tests::PINInitialize(class Microsoft::VisualStudio::TestTools::UnitTesting::TestContext)" (?PINInitialize@UnitTest_PIN_tests@XFS_CUnit_Test@@$$FSMXVTestContext@UnitTesting@TestTools@VisualStudio@Microsoft@@@Z)
Langsam weiß ich echt nicht weiter
-
Schonmal das Debug Verzeichnis des Projekts gelöscht?
Simon
-
Habe gerade einfach mal als Test ein ganz neues Projekt erstellt und wirklich nur eine Funktion drin.
Der Fehler bleibt der gleiche. Ich glaube ich geb es einfach auf
Vielleicht irgendwas spezielles weil es ein Unit Test Projekt ist?Hier mal alle betroffenen Files in dem neuen Projekt:
PIN_functions.h
#include "stdafx.h" class PIN_functions { public: static void initPINService(); };
PIN_functions.cpp
#include "stdafx.h" using namespace System; using namespace System::Text; using namespace System::Collections::Generic; using namespace Microsoft::VisualStudio::TestTools::UnitTesting; class PIN_functions { private: static unsigned short handle; public: static void initPINService() { System::Console::WriteLine("Test"); } };
PIN_tests.cpp
#include "stdafx.h" #include "PIN_functions.h" using namespace System; using namespace System::Text; using namespace System::Collections::Generic; using namespace Microsoft::VisualStudio::TestTools::UnitTesting; namespace XFS_Unit_Test { [TestClass] public ref class UnitTest1 { private: TestContext^ testContextInstance; public: property Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ TestContext { Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ get() { return testContextInstance; } System::Void set(Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ value) { testContextInstance = value; } }; [TestMethod] void TestMethod1() { PIN_functions::initPINService(); }; }; }
-
Warum sucht dein Linker in einer Klasse UnitTest_PIN_functions, obwohl die gezeigte Klasse PIN_functions heisst?
-
Oh, das liegt jetzt an dem neuen Projekt. Da habe ich mir einen Teil der Namen gespart.
Die Fehlermeldung ist jetzt
PIN_tests.obj : error LNK2028: unresolved token ...Das war etwas verwirrend. Sorry!
-
Ja, und denn...
Ist die Klasse vorhanden?
-
Ja. Die ist ja auch in dem Post, indem ich den Code gepostet habe...
PS: Ich bewunder deine Hartnäckigkeit Danke!