Fertige Klassen in .Net DLL-Projekt einbinden



  • Tach.

    Ich möchte ne Dll erstellen. In der Dll sollen Klassen enthalten sein, die ich schon in einem anderen Projekt benutzt habe. Also hab ich ein neues .Net Dll-Projekt (Kassenbibiliotek(.NET)) erstellt und die *.h und *.cpp dem Projekt hinzugefügt. Habe dann in der "main.cpp" die header der Klassen eingebunden.
    Beim erstellen erhalte ich die Fehlermeldung:

    error C2065: 'NULL': nichtdeklarierter Bezeichner

    Das lässt sich ja noch relativ leicht beheben mit

    #define NULL 0
    

    Wenn ich jetzt das ganze erstellen will erhalte ich folgenden Fehler:

    error LNK2001: Nichtaufgelöstes externes Symbol "void __cdecl __CxxCallUnwindDtor(void (__thiscall*)(void *),void *)" (?__CxxCallUnwindDtor@@$$J0YAXP6EXPAX@Z0@Z)

    Ich hab schon nach der Funktion gesucht, aber nicht gefunden.

    Vieleicht kennt sich da jemand aus.

    MfG
    GuenniAtWork



  • mal überlegen 😕

    dieses Stück __cdecl __
    man schreibt sowas in C++ bei ausgelagerten Funktionen oder Methoden.
    Kann also sein und ist auch so das dies Ding dann selbst in einer DLL steckt.
    Dann hilft Dir nur ein Import auf diese DLL wo diese Funktion drinsteckt.

    Du hast sicherlich nur die Headerdatei in deinem Projekt aber keinen Verweis auf die schon kompilierte DLL die diese Funktion hat gemacht.
    Ist meine Meinung zu diesem Thema.

    Das ist ja wieder eine richtige DLL-Hölle.

    Die Header die Du eingebunden hast nützt Dir immer nur in Verbindung mit der dazugehörigen DLL. Denn in der Header stehen nur die Funktionsnamen und derren
    Signaturen. Die Implementieren stecjkt kompilliert in der DLL.

    mfg sclearscreen :xmas1:



  • quatsch __cdecl__ ist eine Aufrufkonvention für die Parameter der Funktion.

    Trotzdem der Compiler sagt aber kann externe blbla nicht auflösen.
    Und das kommt immer wenn Du keinen Verweis auf die tatsächliche[n] DLL[s] gemacht hast!

    Also bleibt Dir nichts anderes übrig als dich zu erinnern wie Die Projekte hiessen die die Klassen enthielten, die Du nutzen willst!

    Dann gehste in deren Debug/Release-Ordner und guckst nach ob bei den Projekt beim kompillieren Dll[s] entstanden sind, wenn ja kannste Verweise auf diese DLL's auf dein derzeitiges Projekt machen.

    Wenn nicht machst Du ein Klassenprojekt auf und fügst die *.h und *.cpp-Dateien der alten Projekte zu diesem Klassenbibliotheksprojekt hinzu. Und zwar die Codedateien deren Code die gewünschten Klassen enthält.

    Dann kompllierst Du dieses Klassenbibliotheksprojekt und fertig hast Du eine DLL meit deinen Klassen. Die entstanden DLL kann dann als Verweis für dein aktuelles Projekt herhalten.

    mfg sclearscreen :xmas2:



  • Wenn nicht machst Du ein Klassenprojekt auf und fügst die *.h und *.cpp-Dateien der alten Projekte zu diesem Klassenbibliotheksprojekt hinzu. Und zwar die Codedateien deren Code die gewünschten Klassen enthält.

    Dann kompllierst Du dieses Klassenbibliotheksprojekt und fertig hast Du eine DLL meit deinen Klassen. Die entstanden DLL kann dann als Verweis für dein aktuelles Projekt herhalten.

    Hab ich doch gemacht!!
    Wenn das funktionieren würde hätt ich den Post nicht gemacht. 😉

    Also das Problem besteht weiterhin. 😞

    Mann, mann, mann, das kann doch nicht so schweh sein aus ein pa *h und *cpp Dateien ne DLL zu erstellen!

    Ich mach dan erstmal Feierabend. 😃

    Gruß GuenniAtWok


Anmelden zum Antworten