LNK2028 Linker-Fehler
-
Hallöle allerseits,
ich will aus einem C++/CLI-Projekt auf nativen C++-Code zugreifen. Beide Projekte sind auf CLR gestellt. Eine der notwendigen Header-Dateien habe ich in den Code inkludiert (#include "../LBackend.h"), dann kommt beim Build folgende Meldung:
Error 1 error LNK2028: unresolved token (0A0001F2) "extern "C" int __stdcall LoadStringW(struct HINSTANCE__ *,unsigned int,wchar_t *,int)" (?LoadStringW@@$$J216YGHPAUHINSTANCE__@@IPA_WH@Z) referenced in function "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall LLibrary::CLRcStringLoader::Load(int)" (?Load@CLRcStringLoader@LdfLibrary@@$$FUAE?AV?char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) LLocalization.obj
Mir ist klar dass es was mit dem Linker zu tun hat, so wirklich weiß ich aber nicht was ich machen muss? Allgemeine Vorgehensweise ist inkludieren der Header-Datei und auf die Bibliothek linken, aber wie mach ich das? (Quelle: MSDN http://msdn.microsoft.com/de-de/library/aa712961.aspx ):
Sie können nicht verwaltete APIs einfach aufrufen, indem die Headerdatei hinzugefügt und mit der Importbibliothek gelinkt wird
Kann es Probleme machen wenn die Projekte in unterschiedlichen Verzeichnissen liegen? Kann mir jemand einen Tip geben?
Schonmal vielen lieben Dank!
-
Kann mir keiner sagen wie ich das mit dem "Linken" im VS machen kann?
-
Wenns um die allgemeine Vorgehensweise geht:
Mit rechts auf das Projek klicken - Eigenschaften
Dort unter Linker - Allgemein die Pfade zu den Libs angeben
und unter Linker - Input den dateinamen (Beispiel.lib) hinzufügen.
-
Hy
Oder du machst es über den Quelltext dann gehts so:
#pragma comment( lib, "PfadZurLib/Libname.LIB" )
Mfg Marc-O
-
Ah, cool, da habt ihr mir geholfen
Hatte es schonmal so, da gings aber nicht ordentlich irgendwie, jetzt habe ich Gewissheit und es ging
Jetzt bekomme ich gleich den nächsten Fehler, aber nicht beim BUILD (der klappt nun) sondern wenn mein DataDriven Test rennt (Er springt erst gar nicht in die Testmethode rein, kein Debuggen möglich):
"Unable to get type LFTest.LFTesting, LFTest.Error: System.IO.FileNotFoundException: Das angegebene Modulwurde nicht gefunden (Ausnahme...) bei System.Runtime.Handle._GetTypeByName(String name, Boolean throwOnError,...)..."Hängt aber wohl damit zusammen oder?
Edit: Was ich gerade gemerkt habe, wenn ich das VS starte kommt die Meldung
Error loading c:\bla\build\debug\LFLib21D.dll": Could not load file or assembly 'LFLib21D, Version....' or one of its dependencies. Exception from result ...
Hmmmm.
-
was ich probieren würde - diese .dll per Windows search suchen und dann in den Build ordner legen.
Von was ist denn die DLL??
-
Auron der Streuner schrieb:
was ich probieren würde - diese .dll per Windows search suchen und dann in den Build ordner legen.
Von was ist denn die DLL??Hi Du, das ist nicht das Problem, ich weiß ganz genau wo die DLL liegt
Die BUILDE ich ebenfalls mit. Das ist ein Projekt das auch in meiner Solution enthalten ist, die is aber unmanaged mit clr!
-
Hallö,
das Problem besteht leider immernoch.
Es muss mit IJW zusammenhängen!
Folgendermassen: Ich will Methoden einer nativen Library (Quelltext liegt vor) über C++/CLI mit IJW testen. PInvoke geht nicht da der Entrypoint der Methoden in der fertigen DLL nicht gefunden werden kann. Also den Quellcode der anzusprechenden Library habe ich unangetastet gelassen (muss ich auch) und versuche nun über meinen C++/CLI-Code auf die Methoden dieser Library zuzugreifen (über include der headerfiles).Hat evtl. jemand einen Ansatz für das Problem?
-
Dinjai schrieb:
...
"Unable to get type LFTest.LFTesting, LFTest.Error: System.IO.FileNotFoundException: Das angegebene Modulwurde nicht gefunden (Ausnahme...) bei System.Runtime.Handle._GetTypeByName(String name, Boolean throwOnError,...)..."
...Wollte hier der Vollständigkeit halber meine Lösunfg zum besten geben:
Es muss für den TestController CodeCoverage für die DLL des TestObjektes angegeben werden!!!!!
Festzulegen unter (in Visual Studio 2005 Team Systems):
Test - Edit Test Run Configurations - Local test Run - Code Coverage -> dort die zu testende DLL aktiv setzen!Vielen Dank für Eure Hilfe