Eine unmanaged Dll in einem managed Projekt referenzieren
-
Hi,
ist es, oder besser wie ist es denn möglich in einem C++ .Net Projekt auf eine Dll aus einem unmanaged Projekt zu verweisen. Ich habe das ganze in einem Webcast von Richard Hundhausen schon einmal gesehen, wo einfach unter Optionen ein neuer Verweis auf die Dll hinzugefügt wurde, leider führt dieser Schritt bei mir zu einem Fehler, dass es sich um keine .Net Assembly handelt. gibt es irgendeine Option die ich noch ändern muss? Achja, ich verwende VS 2005.
die zu referenzierende datei ist:
dll
MFC in shared library
no ATL
no CLRich hoffe auf eine Antwort...mfg crusher...
-
Du machst es wie in einem *ganz normalen* unmanaged Projekt.
Du includierst die h-Datei und sagst dem Linker wo die LIB liegt.
-
naja, das Problem ist, das es ca 30 verschiedene Header und Quellcodedateien gibt, und alle einzeln über include einzufügen ist ja sehr umständlich, von daher wollte ich halt wissen wie man direkt die aus dem unmanaged Projekt entstandene dll referenzieren kann. Denn da wären ja bereits alle Header, Libs und sonstiges schon inkludiert...
Es geht halt um die Möglichkeit diese Daten, als Ausgangsdaten dann für ein VS-Testprojekt zu verwenden..
-
crushercrusher schrieb:
naja, das Problem ist, das es ca 30 verschiedene Header und Quellcodedateien gibt, und alle einzeln über include einzufügen ist ja sehr umständlich, von daher wollte ich halt wissen wie man direkt die aus dem unmanaged Projekt entstandene dll referenzieren kann. Denn da wären ja bereits alle Header, Libs und sonstiges schon inkludiert...
Es geht halt um die Möglichkeit diese Daten, als Ausgangsdaten dann für ein VS-Testprojekt zu verwenden..
Das geht nicht, da in einer "unmanaged DLL" (=normalen DLL) diese Informationen garnicht enthalten sind. Daher bleibt dir nur der ganz normale Weg über Header-Files etc.
Wenn du nicht in zig .cpp Files 20x #include schreiben willst, dann schreib dir doch einfach ein Header-File welches alle häufig benötigten Header-Files inkluiert. Im .cpp File inkludierst du dann erstmal dieses neue Header-File, und zusätzlich nur die spezielleren Sachen die nicht im "common" Header-File drinstehen.
-
genau sowas habe ich mir schon gedacht...leider funktioniert das eben nicht ganz so wie es soll, denn im managed projekt entstehen jetzt in der verlinkt Header Datei SyntaxFehler, und derartiges...die beim builden in dem unmanaged Projekt nicht entstehen
-
Na, das kann ich Dir eigentlich nicht glauben... dann hast Du was falsch gemacht...
WAS sind das für Fehler?
-
Also dann einmal ausführlich..es handelt sich um eine Projektmappe in VC8.0 in der ist ein unmanaged Projekt enthalten. zusätzlich wollte ich nun ein Testprojekt hinzufügen, welche ja managed C++ ist. Das unmanaged Projekt lässt sich einwandfrei kompilieren und builden. Wenn ich nun eine Header-Datei, welche im unmanaged Projekt enthalten ist einfach per include einbinde, tauchen folgende Fehler auf:
...\CCM_Connection.h(116) : error C2143: Syntaxfehler: Es fehlt ';' vor '*'
...\CCM_Connection.h(116) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
...\CCM_Connection.h(116) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
...\CCM_Connection.h(116) : warning C4183: 'GetCS': Rückgabetyp fehlt; Memberfunktion, die 'int' zurückgibt wird angenommen
...\CCM_Connection.h(119) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'm_cs'
...\CCM_Connection.h(119) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
...\CCM_Connection.h(119) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
...\CCM_Connection.h(116) : error C2065: 'm_cs': nichtdeklarierter BezeichnerDas ist das eine Problem und das andere ist, das ich ja eigentlich nicht nur die Header Dateien einbinden müsste, sondern auch die eigentlichen Quellcodedateien um die Methoden aufrufen zu können..
mfg crusher
-
Was wird denn in Zeile 116 für ein Rückgabetyp verwendet? Der ist vermutlich nicht vorhanden (#undef)...
-
es geht um folgende Zeilen:
115 protected:
116 CCriticalSection* GetCS(){ return &m_cs; }
117
118 private:
119 CCriticalSection m_cs;Das sind aufrufe einer MFC Klasse...
-
Und DU hast *vorher auch die MFC-Header eingebunden?
-
direkt nicht, aber in der von mir verlinkten Header Datei werden sie gerufen...das ist ja halt das was ich nicht verstehe...denn im unmanaged Projekt funktioniert das verlinken ja auch korrekt...