DLLs und Exceptions
-
Hi,
ich möchte eine DLL dynamisch laden (funzt perfekt) nun können einige Funktionen in der DLL exceptions werfen die ich in der EXE (oder andere DLL für PlugIn) auffangen will.
Nur das will nicht

Wie macht man das?
-
Gar nicht.
C++ Exceptions dürfen eine DLL niemals verlassen. Du musst wohl einen anderen Weg gehen.
-
Klasse scheisse!
Gibts einen anderen neben Rückgabewerten? Man meine ganze Engine basiert auf exceptions und dann sowas...

-
Das stimmt nicht. Wenn das dein eigener Code ist und du alles mit dem Microsoft Compiler compiliert hast, dann kannst du ruhig Exceptions werfen. Bei der MFC wird's ja schließlich auch gemacht.
-
Ringding schrieb:
Das stimmt nicht. Wenn das dein eigener Code ist und du alles mit dem Microsoft Compiler compiliert hast, dann kannst du ruhig Exceptions werfen.
Theoretisch... kann aber mit einer anderen Compilerversion schon wieder ganz anders aussehen. DLLs wurden so entworfen, dass sie unabhängig von der verwendeten Programmiersprache ansprechbar sind. Ob man die DLL nun in Delphi, VisualBasic, C oder C++ lädt, die DLL sollte trotzdem funktionieren. Das ist eben nicht gewährleistet, wenn die DLL Exceptions wirft.
Bei der MFC wird's ja schließlich auch gemacht.

-
cd9000 schrieb:
DLLs wurden so entworfen, dass sie unabhängig von der verwendeten Programmiersprache ansprechbar sind. Ob man die DLL nun in Delphi, VisualBasic, C oder C++ lädt, die DLL sollte trotzdem funktionieren. Das ist eben nicht gewährleistet, wenn die DLL Exceptions wirft.
Richtig, deswegen auch die Bemerkung von wegen eigener Code und MS Compiler. Ich weiß allerdings jetzt gar nicht, ob hier die Version auch gleich sein muss. Hat sich da was geändert im ABI in letzter Zeit?
-
Wenn man dann noch die eine gemeinsame Rumtime-Lib nimmt (DLL) sollte es gehen, wenn man immer den gleichen Compiler nimmt.