Announcement

Collapse
No announcement yet.

dynamische DLL mit Borland C++ 5.02

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • dynamische DLL mit Borland C++ 5.02

    <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(&quot;rajawinspezial .dll&quot; // 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,&quot;dllspezialmenue&quot;
    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) &amp;lpMsgBuf, 0,NULL);
    MessageBox( hMainWnd, (char *)lpMsgBuf, &quot;GetLastError&quot;, MB_OK|MB_ICONINFORMATION );
    LocalFree( lpMsgBuf );
    }
    //
    // hier erhalte ich die Fehlermeldung: &quot;Die angegebene Prozedur wurde nicht gefunden&quot;.
    //
    // meine Funktion in der DLL sieht so aus:
    __declspec(dllexport) void dllspezialmenue(HWND hMain)
    ....
    </pre>
    <p>Deklarationen mit extern &quot;C&quot; ... nimmt der Compiler überhaupt
    nicht an. Was mache ich denn nun schon wieder falsch ?</p>
    <p>Danke - Günther</p>
    <p>&nbsp;</p>

    </body>

    </html>
    Günther

  • #2
    Ich hab's schon :-)

    In der .Exe ein '_' vor den Fumktionsnamen setzen oder irgendwo eine Linker-Einstellung ändern
    Günther

    Comment

    Working...
    X