Hallo,
ich habe ein bestehendes Programm und eine Dll, die ich in diesem Programm verwende und die die Ressourcen sowie die Dialoge enthält.
Nun möchte ich außerdem die Texte der Messageboxen, die im Hauptprogramm sind in die DLL auslagern, um das Programm in verschiedenen Sprachen erstellen zu können und dazu nur die DLL ändern zu müssen.
Ich lade die DLL am anfang des Programms mit
und habe in der Headerdatei des Hauptprogramms folgende Deklarationen:
die DLL sieht folgendermaßen aus:
Header:
und cpp:
Ich habe alles gleich deklariert wie für die Dialogfenster auch, jedoch bekomme ich beim Compilieren des Hauptprogramms Fehlermeldungen:
Checklist.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t * MBOX_OLDVERSION" (?MBOX_OLDVERSION@@3PA_WA)".
Checklist.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t * MBOX_ATTENTION" (?MBOX_ATTENTION@@3PA_WA)".
Checklist.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t * MBOX_LICENCEFAULT" (?MBOX_LICENCEFAULT@@3PA_WA)".
Checklist.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t * MBOX_FAILURE" (?MBOX_FAILURE@@3PA_WA)".
Wie kann ich auf die Variablen in der DLL zugreifen?
Vielen Dank
Andreas Schlegel
ich habe ein bestehendes Programm und eine Dll, die ich in diesem Programm verwende und die die Ressourcen sowie die Dialoge enthält.
Nun möchte ich außerdem die Texte der Messageboxen, die im Hauptprogramm sind in die DLL auslagern, um das Programm in verschiedenen Sprachen erstellen zu können und dazu nur die DLL ändern zu müssen.
Ich lade die DLL am anfang des Programms mit
Code:
g_hRsrc = LoadLibrary(k_szRsrcLibFileName);
Code:
extern TCHAR MBOX_FAILURE[]; extern TCHAR MBOX_ATTENTION[]; extern TCHAR MBOX_LICENCEFAULT[]; extern TCHAR MBOX_OLDVERSION[];
Header:
Code:
#ifdef CHECKLIST_LANGUAGE_EXPORTS #define CHECKLIST_LANGUAGE_API __declspec(dllexport) #else #define CHECKLIST_LANGUAGE_API __declspec(dllimport) #endif // Diese Klasse wird aus checklist_language.dll exportiert. class CHECKLIST_LANGUAGE_API Cchecklist_language { public: Cchecklist_language(void); // TODO: Hier die Methoden hinzufügen. };
Code:
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } // Dies ist das Beispiel einer exportierten Variable. CHECKLIST_LANGUAGE_API int nchecklist_language=10; //Sprachvariablen für Messageboxen im Hauptprogramm/////////////////// //MessageboxÜberschriften///////////////// CHECKLIST_LANGUAGE_API TCHAR MBOX_FAILURE[] = TEXT("Fehler!"); CHECKLIST_LANGUAGE_API TCHAR MBOX_ATTENTION[] = TEXT("Achtung!"); CHECKLIST_LANGUAGE_API TCHAR MBOX_LICENCEFAULT[] = TEXT("Lizenzdatei stimmt nicht mit dem Gerät überein oder fehlt!"); CHECKLIST_LANGUAGE_API TCHAR MBOX_OLDVERSION[] = TEXT("Sie benutzen eine zu alte Version!");
Checklist.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t * MBOX_OLDVERSION" (?MBOX_OLDVERSION@@3PA_WA)".
Checklist.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t * MBOX_ATTENTION" (?MBOX_ATTENTION@@3PA_WA)".
Checklist.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t * MBOX_LICENCEFAULT" (?MBOX_LICENCEFAULT@@3PA_WA)".
Checklist.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t * MBOX_FAILURE" (?MBOX_FAILURE@@3PA_WA)".
Wie kann ich auf die Variablen in der DLL zugreifen?
Vielen Dank
Andreas Schlegel
Comment