Accessfunktionen zu pluginklassen



  • Hallo,

    ich schreibe grade an einer pluginmäßig aufgebauten Grafikengine. Dabei habe ich jetzt ein seltsames Problem:

    Ich habe eine statische Bibliothek, die von einer Konsolenanwendung heraus aufgerufen wird. Diese statische Lib hat die Aufgabe, das Laden der richigen Dll zu gewährleisten. Darin gibt es eine Methode, die dann einen Parameter (char*) erwartet, der bestimmt, welche dll geladen wird.

    Nun zum Problem: In dieser Methode wird letzendlich diese Accessfunktion aufgerufen:

    extern "C" __declspec (dllexport) long CreateRenderDevice (HINSTANCE hdll, MACRenderDevice** ptr_interface)
    {
    	*ptr_interface = new MACD3D (hdll);
    	printf ("\tWert für Instanz ist %p\n", *ptr_interface);
    	return MAC_READY;
    }
    

    Im Debugger passiert folgendes: Er geht in die Funktion rein aber nur in die nächste Zeile und geht nicht in den Konstruktor von MACD3D. Stattdessen wird direkt die ReleaseRenderDevice funktion aufgerufen.

    Kann mir das einer erklären?! Also auch das printf wird nie erreicht!!!

    gruß Sebastian



  • Warum kriege ich denn keine Antwort?!



  • wahrscheinlich, weil deine frage zu ungenau ist.

    ReleaseRenderDevice

    seh ich zb nirgends.
    außerdem, weil die frage sehr wenig bis gar nichts mit standard c++ zu tun hat.
    "wmmf" durchlesen
    wahrscheinlich bist du im winapi forum besser aufgehoben.
    mehr infos wären, denk ich, trotzdem nicht schlecht.



  • Dieser Thread wurde von Moderator/in davie aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Also das genaue Problem ist, dass der Linker irgendein Problem hat:

    Die Zwischen- und Ausgabedateien für das Projekt "MACRenderer" mit der Konfiguration "Debug|Win32" werden gelöscht.
    Kompilieren...
    MACRendererDevice.h
    ** MACRendererDevice.h wird eingebunden**
    MACRenderer.cpp
    ** MACRenderer.h eingebunden **
    ** MACRendererDevice.h wird eingebunden**
    Generieren von Code...
    d:\myprojects\multimedialapplicationcore\macrenderer\macrenderer.cpp(56) : warning C4706: Zuweisung in bedingtem Ausdruck
    d:\myprojects\multimedialapplicationcore\macrenderer\macrenderer.cpp(76) : warning C4706: Zuweisung in bedingtem Ausdruck
    Kompilieren...
    MACRenderer.h
    ** MACRenderer.h eingebunden **
    ** MACRendererDevice.h wird eingebunden**
    Bibliothek wird erstellt...
    Microsoft (R) Library Manager Version 7.10.3077
    Copyright (C) Microsoft Corporation. All rights reserved.
    "/OUT:Debug/MACRenderer.lib"
    .\Debug\MACRenderer.obj
    .\Debug\MACRenderer1.obj
    .\Debug\MACRendererDevice.obj
    MACRenderer1.obj : warning LNK4221: Es wurden keine öffentlichen Symbole gefunden. Zugriff auf das archivierte Member wird nicht möglich sein

    Build-Zeit 0:09
    Das Build-Protokoll wurde unter "file://d:\myProjects\MultimedialApplicationCore\MACRenderer\Debug\BuildLog.htm" gespeichert.
    MACRenderer - 0 Fehler, 3 Warnung(en)

    ---------------------- Fertig ----------------------

    Neues Erstellen: 1 erfolgreich, 0 fehlgeschlagen, 0 übersprungen

    woher kommt das denn???? kann das ein Codeproblem sein oder habe ich eine Konfiguration falsch gesetzt?



  • ich verstehe auch gar nicht warum der ne Objektdatei MACRenderer1.obj macht ich habe folgende Quellcodedateien:

    - MACRenderer.h
    - MACRenderDevice.h
    - MACRenderer.cpp

    Gruß Para


Anmelden zum Antworten