Problem mit Unmanaged C++ im Unit Test



  • Hi,

    bin mir mit dem Forum hier nicht ganz so sicher. Also ich habe Visual Studio 2008 Professional. Zu meinem Problem: Ich habe eine DLL in unmanaged C++ geschrieben. In der selben Projektmappe habe ich nun ein Projekt namens "Unit Tests" erstellt. Hier wollte ich nun die DLL einbinden und Tests für sie schreiben. Das Einbinden habe ich so gemacht, wie eine DLL in Unmanaged C++ meistens eingebunden wird:

    #pragma comment(lib,"../Debug/FooD.lib")
    

    Leider ist es so, dass immer, wenn ich einen in "FooD.dll" definierten Datentyp im Test verwende und dann irgend einen Test aus dem Projekt "Unit Tests" auszuführen versuche, ich folgende Fehlermeldung erhalte:

    Der Typ "UnitTests.Testklassenname, Unit Tests" konnte nicht abgerufen werden. Fehler: System.IO.FileNotFoundException: Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E)

    Ich habe schon überlegt, dass möglicherweise die einzubindende DLL "FooD.dll" nicht gefunden wird, aber ich habe auch versucht, sie nach Windows/System32 zu kopieren, an der Fehlermeldung hat es Nichts geändert.

    Ich nehme an, dass das Problem mehr etwas damit zu tun hat, die DLL korrekt einzubinden, als speziell mit Unit Tests, wissen tue ich es aber nicht, da ich mit Managed C++ quasi Null Erfahrung habe. Wäre für Hilfe sehr dankbar!



  • Ich hätte jetzt auch vermutet, dass er die DLL nicht finden kann. Ob .NET aber im system32-Ordner sucht, kann ich gerade nicht sagen. Es wäre gut, wenn Du Dein *Projekt* als Referenz des Unit-Tests angibst. Dann sollte die DLL automatisch in das passende Verzeichnis kopiert werden.

    Bzgl. unmanaged Tests: Siehe:
    http://blogs.vertigosoftware.com/teamsystem/archive/2006/09/29/3825.aspx



  • Hi, was meinst du mit "Referenz"? Im Projekt-Menü finde ich nichts entsprechendes.

    Zu dem Link. Im Prinzip bin ich genau so vorgegangen, nur mit dem Unterschied, dass ich keine managed Wrapper-Klassen erstellt habe. Wenn mir sonst nichts einfällt, werde ich es wohl tun. 🙂

    EDIT: Also ich hab jetzt mal versucht, eine Wrapper-Klasse im selben Projekt anzulegen, wo auch die Unit-Tests drin sind, hat aber nichts geändert.



  • Leider ist es so, dass immer, wenn ich einen in "FooD.dll" definierten Datentyp im Test verwende und dann irgend einen Test aus dem Projekt "Unit Tests" auszuführen versuche, ich folgende Fehlermeldung erhalte:

    Der Typ "UnitTests.Testklassenname, Unit Tests" konnte nicht abgerufen werden. Fehler: System.IO.FileNotFoundException: Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E)

    Hallo the[V]oid,

    ich hatte ein ähnliches Problem, auch in VS 2008 Pro mit dem Testen einer unmanaged Klasse.
    Bei mir hat ein etwas seltsamer Trick geholfen: Ich habe oberhalb der eigentlichen Testklasse eine zweite Testklasse eingefügt und in dieser einen Dummy-Test angelegt. Danach ließen sich sowohl dieser Dummy-Test als auch mein Test der unmanaged Klasse problemlos ausführen. Inzwischen habe ich die Klasse mit dem Dummy-Test wieder entfernt und es funktioniert weiterhin ohne Probleme.
    Manchmal scheinen die Wege von Visual Studio eben einfach unergründlich...



  • Hi, habe das selbe Phänomen bei meinen Unittests, diese enthalten noch keinen Inhalt, bringen aber denselben oben erwähnten Fehler, ist denn dafür noch eine Lösung entstanden? Während der Testausführung sind alle benötigten DLL Dateien in den passenden Ordnern...


Log in to reply