Klasse aus DLL importieren...



  • Inwieweit "zusätzlich gemangelt"?


  • Mod

    Name mangeling ist die Art und Weise wie der C++ Compiler Symbole verschlüsselt, damit Sie der Linker versteht.

    Hast Du ein Mini-Sample? Schick es mir per Email.



  • Hi Martin,

    Hast Du ein Mini-Sample

    Ich kann dir das ganze Projekt zippen bzw. die Mappe und dir mailen... ich hab da nicht wirklich was zu verstecken :)... aber es könnte ein bischen größer werden 🙂

    Danke für das Angebot
    Jogilein

    PS: Ich warte noch auf deine Antwort, ob es ok ist...



  • HI Martin,

    ich sehe gerade, dass das Paket nicht so groß ist (ohne Intellisense etc... nur 230KB)... ich schick es einfach mal 🙂

    Nochmals danke für jede Anmerkung die du hast, sei es wegen schlechten Programmierstyles oder unmöglichen Konstruktionen 😃


  • Mod

    Ich bin eben erst dazu gekommen Dein Projekt anzusehen.
    Erster Eindruck: Eine einzige Katastrophe.
    Selbst wenn man Testcode baut, sollte er leserlich sein und die Indents stimmen.
    Würdest Du in meiner Firma arbeiten und solchen Code (selbst als Testproject) schreiben, würde ich Dir auf die Finger klopfen... 😉
    Ich befürchte ja sogar das dieser Code direkt Produktiv-Code werden soll...

    - Das Memory Leak ensteht dadurch, dass Dein DLL und Deine EXE nicht das selbe MFC Projekt verwenden. EXE ist Multibyte, DLL ist UNICODE! Die beiden Projekte verwenden komplett unterschiedliche DLL Kerne.
    - Du hast nicht auf mich gehört und die Create Funktion als extern "C" definiert.
    - Du hättest Dir auch das Entwicklen leicher machen können, indem Du bei beiden Projekten ein identisches Ausgabevezeichnis angibst.



  • Erster Eindruck: Eine einzige Katastrophe.

    Autsch...

    Selbst wenn man Testcode baut, sollte er leserlich sein und die Indents stimmen.

    Nur zu meiner Verteidigung :D... das mach ich nicht damit ich den Testcode schneller finden :)... schlechte Ausrede 👎...

    Ich befürchte ja sogar das dieser Code direkt Produktiv-Code werden soll...

    Nein... es ist erstmal ein Test :)... aber ich würde schon später was feines daraus bauen :D...

    Nun aber erstmal vielen Dank dafür, dass du dich durch dieses Chaos gekämpft hast :)...

    Du hast nicht auf mich gehört und die Create Funktion als extern "C" definiert.

    Mist... das hab ich mal wieder vergessen :(... aber die Create-Funktion kann ich nun aufrufen... Danke!

    Das Memory Leak ensteht dadurch, dass Dein DLL und Deine EXE nicht das selbe MFC Projekt verwenden. EXE ist Multibyte, DLL ist UNICODE! Die beiden Projekte verwenden komplett unterschiedliche DLL Kerne.

    Ich hab jetzt beide auf Multibyte umgestellt... aber der Leak ist noch immer da 😞

    Du hättest Dir auch das Entwicklen leicher machen können, indem Du bei beiden Projekten ein identisches Ausgabevezeichnis angibst.

    Du meinst damit die DLL direkt im Verzeichnis der EXE liegt... Stimmt :D...

    Also nochmals vielen vielen Dank Martin für die Hilfe und dafür das du dir den Code angeschaut hast... ich versuche mich in Sachen "Erster Eindruck" zu bessern :D... vielleicht findest du kurz Zeit einige Tipps zu geben... damit er leserlicher wird (Indents hab ich notiert).

    Gruß
    Jogilein



  • Bekomme nun folgendes bei der Ausgabe, zusätzlich zu den Memory Leaks... was bedeutet das?

    Eine Ausnahme (erste Chance) bei 0x7c809e3a in FIS.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x10024dc0.
    #File Error#(51) : {147} client block at 0x00358B28, subtype c0, 104 bytes long.
    Eine Ausnahme (erste Chance) bei 0x7821f400 (mfc80d.dll) in FIS.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x10024f14.
    faulted while dumping object at $00358B28, 104 bytes long
    Object dump complete.
    


  • Habs gelöst :)... aber vielleicht könnte mir jemand erklären was die Fehlermeldung nun bedeutete :D...

    Danke


  • Mod

    Eine Ausnahme (erste Chance)

    Hier wird eine Exception von einem Modul gworfen, aber diese wird auch behandelt. Der Debugger zeigt diese jedoch immer an. Schau mal in die FAQ da findest Du sicher was dazu. Siehe auch "First chance exception"

    Ansonsten sende mir noch mal Dein Sample. Dann habe ich wieder was zu motzen... 😃



  • Werde ich gleich sofort losschicken :)... und dann werde ich danach mal ein bischen darüber lesen... wobei er ja jetzt nichts mehr zu meckern hat und alles läuft...

    Naja ansonsten hab ich jetzt alles schön in einzelne Libs gepackt und ein bischen versucht aufzuräumen, damit du nicht wieder zu sehr meckerst :D... Und ich habe es sogar geschafft, dass die einzelnen kompilierten Programme in ein Verzeichnis gehen und von dort aus dann auch ausgeführt werden können... ach ja und ich hab Abhängigkeiten gesetzt :)...

    Ansonsten hätte ich noch eine Frage:
    Gibt es für solch einen "Funktionsprototypen" (ich weiß nicht ob das die korrekte Bezeichnung ist) einen Notationsstandard für den Namen

    typedef IGUIElement* (CALLBACK* [b]LPFNDLLFUNC1[/b])();
    

    Ich meine sowas wie eine Membervariabel beginnt mit m_Name...

    Gruß
    Jogilein


Anmelden zum Antworten