![]() |
Call DLL from Memory Error
Hi,
habe grade ein Problem, leider in c++, daher versuche ich das Problem mal in reine Worte zu verfassen. Ich habe ein Programm welches mir eine DLL aus dem Speicher lädt und mappt. Das funktioniert soweit, allerdings wenn aus dieser DLL Funktionen aus einer anderen DLL geladen und aufgerufen werden crasht das Programm. Die DLL funktioniert einwandfrei wenn sie nicht aus dem Speicher, sondern mit LoadLibrary geladen wird. Hat jemand eine Idee woran das liegen könnte? Vielen Dank für die Hilfe. |
AW: Call DLL from Memory Error
Natürlich könnte man noch verrate wie man die DLL läd, da das ja kein Standardverhalten ist.
Grundsätzlich würde ich jetzt mal vermuten, daß eventuell die DLL falsch geladen und z.B. vergessen wurde irgendwelche Reallocations aufzulösen/anzupassen oder daß die Importe nicht richtig geladen und verlinkt wurden. ODER ... Ist die DLL von dir? ... die Aufrufkonventionen oder Funktionsparameter sind falsch deklariert. :stupid: |
AW: Call DLL from Memory Error
Zitat:
|
AW: Call DLL from Memory Error
Ja genauer gesagt habe ich eine selbstgeschriebene DLL, die mit winsock (ws2_32.dll) einen Speedtest durchführt.
Meine DLL funktioniert einwandfrei wenn ich sie normal mit Loadlibrary lade. Sie crasht jedoch immer dann wenn ich sie aus dem Speicher lade und versuche eine Funktion aus der ws2_32.dll aufzurufen. Mein Programm, das die DLL lädt hat ws2_32 schon geladen, d.h. meine DLL die aus dem Speicher geladen wird, holt sich das Handle einfach via GetModuleHandle(). Habe mir aus meinem Mainprogramm die Adresse von socket() ausgeben lassen, welche mit der Adresse von msocket() (dynamisch gecallt) aus meiner DLL übereinstimmt. Beim Versuch msocket() aus der dll zu callen crash, wie schon gesagt. Ich denke den Code brauch ich nicht zu posten, da ich ihn komplett posten müsste (sind zu viele Macros etc, um codeparts zu posten) was wiederum eine Zumutung wäre zu verlanden das alles durchzulesen^^ Hoffe einfach auf jemanden der ein ähnliches Problem hatte oder sich vorstellen kann woran es liegen könnte. |
AW: Call DLL from Memory Error
Unmöglich das ohne konkreten Code zu sagen. Wenn du dein Projekt mal anhängst, würde ich mich erbarmen mal drüberzuschauen. Was benutzt du denn zum manual mappen? Was selbstgeschriebenes oder eine fertige Lösung wie BlackBone?
|
AW: Call DLL from Memory Error
Zacherl+1. Vielen dank für die große Hilfe die du mir anbietest! Das Problem war viel zu simple -es hat nur wsastartup gefehlt:oops:
|
AW: Call DLL from Memory Error
Nur aus Interesse: Warum tut man sowas? Warum kein LoadLibrary?
|
AW: Call DLL from Memory Error
Zitat:
|
AW: Call DLL from Memory Error
Dann kopiert man sich eben diese Datei schön fertig entschlüsselt aus dem Arbeitsspeicher. :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz