dlls mit Klassen?
-
also verwendest du doch cpp in deiner dll.

nochmal langsam.
1. du hattest eine funktionierende c dll
2. diese wird von einem c programm verwendet
3. du möchtest jetzt irgendwelche klassen der dll hinzufügen
4. diese dll sollte allerdings immernoch von dem c programm dynamisch geladen werden
5. und wer braucht die klassen? vermutlich du in deiner dllps:
include guards dürfen, laut dem standard, nicht mit einem unterline anfangen.
-
jep
-
soll ich mal das ganze projekt posten bzw. n link geben?
-
besser nen link
-
-
hatte gestern keine zeit mehr, sorry. habe es mir mal gerade angeschaut und stelle fest das wenn deine dll dynamisch geladen werden soll eigentlich fast nichts im header stehen würde bzw wenn du es auf die spitze treiben möchtest dann bräuchtest du gar keinen.
// dll.h #ifndef DLL_H_ #define DLL_H_ #ifdef __cplusplus extern "C" { #endif __declspec(dllexport) PLUGININFO* MirandaPluginInfo(DWORD mirandaVersion); int __declspec(dllexport) Load(PLUGINLINK *link); int __declspec(dllexport) Unload(void); #ifdef __cplusplus } #endif #endifps:
wenn du eine datei als cpp kompilierst dann benenne sie auch so *.cpp nicht dllmain.c
-
Stimmt, eigentlich bräuchte man das nicht. Aber damit ich nicht alle Funktionen in einer Datei habe, hab ich diese nach "Themen" in andere *.cpp Dateien eingeordnet. Damit die Funktionen aber immer noch aufeinander zugreifen können, wie z.B. Load () auf HookProc(), brauche ich den Header. Er dient nicht nur als Interface für das Programm, das die dll lädt, sondern auch für die Funktionen in der Dll selbst. Hab auch mal alle Funktionen in eine mein gepackt und deinen Header verwendet, aber meine Resource wird immer noch nicht geladen.
-
N00Bie schrieb:
Damit die Funktionen aber immer noch aufeinander zugreifen können, wie z.B. Load () auf HookProc(), brauche ich den Header.
nein jede quelldatei sollte einen header haben und nicht einen zusammen
gewürfelten header// menu.h // ... int HookProc(WPARAM wParam,LPARAM lParam); BOOL CALLBACK DialogProc(HWND, UINT, WPARAM, LPARAM); void RefreshList (HWND list); // menu.c // bleibt unverändert // dllmain.cpp #include "menu.h"N00Bie schrieb:
Er dient nicht nur als Interface für das Programm, das die dll lädt, sondern auch für die Funktionen in der Dll selbst.
interface? ich dachte dynamisch -> somit musst du doch nur diese drei exportieren und darauf achten das sie funktionsnamen stimmen.
kannst ja den walker als hilfe nehmen http://dependencywalker.com/
-
miller_m schrieb:
nein jede quelldatei sollte einen header haben und nicht einen zusammen
gewürfelten header// menu.h // ... int HookProc(WPARAM wParam,LPARAM lParam); BOOL CALLBACK DialogProc(HWND, UINT, WPARAM, LPARAM); void RefreshList (HWND list); // menu.c // bleibt unverändert // dllmain.cpp #include "menu.h"Danke, das hilft in Hinsicht auf die Struktur schon ziemlich viel

-
Aber leider hilft es nicht gegen mein Problem mit dem property sheet.
Ich hab auch schon versucht es mit VC++ zu compilieren, aber das hat zum selben Fehler geführt.