Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » DLLs mit wxDevcpp aufrufen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.02.2008, 10:55 Uhr
cplusanfaenger



Hallo,
Dies ist mein erste Frage hier im Forum und ich bin mir nicht sicher, ob ich die frage im richtigen Forum stelle.
Also: Ich bin schon mit den wichtigsten Funktionen von C++ bekannt. Nun wollte ich gerne mal lernen, wie man eine Dll erstellt, leider habe ich keine Hinweise darüber bekommen, wie man dies mit devcpp(Mingw) macht. Bei Projekten habe ich einfache eine Dll erstellt:
dll.h

C++:
#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */


class DLLIMPORT DllClass
{
  public:
    DllClass();
    virtual ~DllClass(void);
    void Hallo();

  private:

};


#endif /* _DLL_H_ */


dllmain.cpp

C++:
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
#include <iostream>
using namespace std;

DllClass::DllClass()
{

}


DllClass::~DllClass ()
{

}

void DllClass::Hallo()
{
    cout<<"Hallo";

}


BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       DWORD reason        /* Reason this function is being called. */ ,
                       LPVOID reserved     /* Not used. */ )
{
    switch (reason)
    {
      case DLL_PROCESS_ATTACH:
        break;

      case DLL_PROCESS_DETACH:
        break;

      case DLL_THREAD_ATTACH:
        break;

      case DLL_THREAD_DETACH:
        break;
    }

    /* Returns TRUE on success, FALSE on failure */
    return TRUE;
}


Dann habe ich versucht, die Funktion Hallo in einer Konsolenanwendung zu verwenden, aber dies funktioniert nicht:

C++:
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include "dll.h"

using namespace std;

int main()
{
    HINSTANCE hLib = LoadLibrary("DLL.dll");
    if (hLib!=NULL)
    {
        cout<<"Kein Fehler\n";
        DllClass test;
        test.Hallo();
    }
    else{cout<<"Fehler";}
    system("PAUSE");
    return EXIT_SUCCESS;
}


Der Compiler zeigt folgende Fehlermeldungen:
[Linker Error] undefined reference to `_imp___ZN8DllClassC1Ev'
[Linker Error] undefined reference to `_imp___ZN8DllClass5HalloEv'
[Linker Error] undefined reference to `DllClass::~DllClass()'
[Linker Error] undefined reference to `DllClass::~DllClass()'

Was muss ich den ändern, um die Funktion DllClass::Hallo() aufrufen zu können?

Ich bin für jede Hilfe dankbar
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.02.2008, 14:33 Uhr
0xdeadbeef
Gott
(Operator)


Nimm den ganzen LoadLibrary-Kram da raus, den brauchst du nur, wenn du die DLL bedingt zu bestimmten Zeiten nachladen und Funktionen daraus holen willst. Also zum Beispiel bei Plugins.

Beim Bauen der DLL ist eine .lib-Datei entstanden. Bring dem Linker bei, die dazuzulinken, sie enthält Stub-Funktionen, die auf die DLL zugreifen. Zum Starten des Programms brauchst du später nur die DLL.

Ich hab das vor kurzer Zeit schonmal hier erklärt.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.02.2008, 19:10 Uhr
cplusanfaenger



Danke für dein Hilfe. Da aber Dev-cpp scheinbar Probleme mit DLLs hat, habe ich mich einfach an folgende Seite gehalten:www.mingw.org/MinGWiki/index.php/sample%20DLL Jetzt funktioniert alles. Nichts geht doch über Konsolenbefehle!
Dieser Post wurde am 16.02.2008 um 19:11 Uhr von cplusanfaenger editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: