<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Neue Seite 1</title>
</head>
<body>
<p>Von meinem Programm gibt es zwei Versionen: Die Internetversion für unsere
Kunden und eine erweiterte Spezialversion zum firmeninternen Gebrauch und für
ein paar Außendienstler. Bisher habe ich die Spezialfunktionen in #ifdef -
Blöcke gepackt und nacheinander zwei Exe-Dateien compiliert. Das möchte ich
mir ersparen, indem ich die Spezialfunktionen komplett oder zum Teil in eine DLL
packe, die nicht an jedermann weitergegeben wird. Es handelt sich um ein reines
C-Programm, WIN32 GUI, Borland C++ 5.02. Unter den Beispieldateien finde ich ein
Projekt DLLDEMO und ein Projekt DLLSKEL. Beide laufen zwar bei mir, aber bei der
Übertragung in mein Programm stoße ich auf Probleme.</p>
<pre>
//
HINSTANCE hSpezialDllModule=NULL; // global deklarierte Variable
//
hSpezialDllModule=LoadLibrary("rajawinspezial .dll" // steht in der WinMain
// Die DLL wird hier erfolgreich geladen.
//
// und dann in den Initialisierungsroutinen die bei WM_CREATE aufgerufen werden:
if(hSpezialDllModule!=NULL)
{
__declspec(dllexport) void (*DllSpezialMenue)(HWND);
(FARPROC)DllSpezialMenue=GetProcAddress((HINSTANCE )hSpezialDllModule,"dllspezialmenue"
if(DllSpezialMenue!=NULL) DllSpezialMenue(hMainWnd);
else
{
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf, 0,NULL);
MessageBox( hMainWnd, (char *)lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION );
LocalFree( lpMsgBuf );
}
//
// hier erhalte ich die Fehlermeldung: "Die angegebene Prozedur wurde nicht gefunden".
//
// meine Funktion in der DLL sieht so aus:
__declspec(dllexport) void dllspezialmenue(HWND hMain)
....
</pre>
<p>Deklarationen mit extern "C" ... nimmt der Compiler überhaupt
nicht an. Was mache ich denn nun schon wieder falsch ?</p>
<p>Danke - Günther</p>
<p> </p>
</body>
</html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Neue Seite 1</title>
</head>
<body>
<p>Von meinem Programm gibt es zwei Versionen: Die Internetversion für unsere
Kunden und eine erweiterte Spezialversion zum firmeninternen Gebrauch und für
ein paar Außendienstler. Bisher habe ich die Spezialfunktionen in #ifdef -
Blöcke gepackt und nacheinander zwei Exe-Dateien compiliert. Das möchte ich
mir ersparen, indem ich die Spezialfunktionen komplett oder zum Teil in eine DLL
packe, die nicht an jedermann weitergegeben wird. Es handelt sich um ein reines
C-Programm, WIN32 GUI, Borland C++ 5.02. Unter den Beispieldateien finde ich ein
Projekt DLLDEMO und ein Projekt DLLSKEL. Beide laufen zwar bei mir, aber bei der
Übertragung in mein Programm stoße ich auf Probleme.</p>
<pre>
//
HINSTANCE hSpezialDllModule=NULL; // global deklarierte Variable
//
hSpezialDllModule=LoadLibrary("rajawinspezial .dll" // steht in der WinMain
// Die DLL wird hier erfolgreich geladen.
//
// und dann in den Initialisierungsroutinen die bei WM_CREATE aufgerufen werden:
if(hSpezialDllModule!=NULL)
{
__declspec(dllexport) void (*DllSpezialMenue)(HWND);
(FARPROC)DllSpezialMenue=GetProcAddress((HINSTANCE )hSpezialDllModule,"dllspezialmenue"
if(DllSpezialMenue!=NULL) DllSpezialMenue(hMainWnd);
else
{
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf, 0,NULL);
MessageBox( hMainWnd, (char *)lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION );
LocalFree( lpMsgBuf );
}
//
// hier erhalte ich die Fehlermeldung: "Die angegebene Prozedur wurde nicht gefunden".
//
// meine Funktion in der DLL sieht so aus:
__declspec(dllexport) void dllspezialmenue(HWND hMain)
....
</pre>
<p>Deklarationen mit extern "C" ... nimmt der Compiler überhaupt
nicht an. Was mache ich denn nun schon wieder falsch ?</p>
<p>Danke - Günther</p>
<p> </p>
</body>
</html>
Comment