Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » dll erstellen macht probleme

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 < [ 2 ]
000
19.04.2005, 12:39 Uhr
RedEagle



Hi
ich möchte eine *.dll erstellen, aber mein Compiler (DEV-CPP) macht Probleme:

dll.h

C++:
#ifndef _main_dll
#define _main_dll

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


#include <windows.h>
#include <stdio.h>

// Sonderzeichen
const unsigned char ae = (char)132; //ä
const unsigned char oe = (char)148; //ö
const unsigned char ue = (char)129; //ü
const unsigned char AE = (char)142; //Ä
const unsigned char OE = (char)153; //Ö
const unsigned char UE = (char)154; //Ü
const unsigned char ss = (char)225; //ß

//ein paar defines...

//viele andere Funktionen...
       void DLLIMPORT coutput(char value, int x, int y);  
//noch eine Funktion...


#endif /* _main_dll */




dll.cpp

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

#define DLL_EXPORT

//... viele Funktionen

void APIENTRY RST_coutput(char value, int x, int y)
{
DWORD dwNumberOfCharsWritten = 1;

RST_gotoxy(x,y);
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), &value, 1, &dwNumberOfCharsWritten, NULL);
} //######### HIER KOMMT EIN FEHLER ############

//noch ne Funktion

//------------------------------------------------------------------------------

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;
}




Fehler:

Internal compiler error in rest_of_compilation, at toplev.c:



Was ist Falsch??

ps.: Original-code
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.04.2005, 13:40 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


einmal

C++:

void APIENTRY RST_coutput(char value, int x, int y)



und einmal


C++:
void DLLIMPORT coutput(char value, int x, int y);  



und dann ist DLLIMPORT als dllexport definiert, da du BUILDING_DLL nicht definiert hast, wodurchs den internen compilererror erzeugt
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.04.2005, 17:38 Uhr
RedEagle



OK, die dll hab ich jetzt, aber ich komme irgendwie nicht an die Funktionen:

hab den Header dll.h in mein Projekt eingebunden, in der ich die dll benutzen möchte:


C++:
#include "dll.h"

//...

RST_coutput('X', 10, 10);

//...



jetzt kommt der Fehler

Fehler:

`RST_coutput' undeclared (first use this function)



Wie benutze ich jetzt die Funktion aus der dll??

ps.:
Der header sieht jetzt so aus:

C++:
//---------------------------------------------
//dll.h

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

//---------------------------------------------
//dll.cpp

#define BUILDING_DLL


--
MFG RedEagle

Dieser Post wurde am 19.04.2005 um 17:52 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.04.2005, 18:13 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
//---------------------------------------------
//dll.h

#ifndef BUILDING_DLL
# define DLL_API __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLL_API __declspec (dllimport)
#endif /* Not BUILDING_DLL */

void DLL_API RST_coutput(char value, int x, int y);
// usw
* DLL_API RST_...

//---------------------------------------------
//dll.cpp

// meist definiert der compiler schon ein bestimmtes define bei ner dll, benutz dann am besten das, beim vc ists glaub ich _DLL
#define BUILDING_DLL

void DLL_API RST_coutput(char value, int x, int y) // willst ja schliesslich die funktion exportieren?!?
{
  // ...
}

// usw
* DLL_API RST_...
{
  // ...
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.04.2005, 18:20 Uhr
RedEagle



ok, soweit habe ich das ja, aber was ist/macht/soll das??

C++:
* DLL_API RST_...
//bzw
* DLL_API RST_coutput(char value, int x, int y)



muss ich die Funktionen 2 mal schreiben??
--
MFG RedEagle

Dieser Post wurde am 19.04.2005 um 18:21 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.04.2005, 18:24 Uhr
Spacelord
Hoffnungsloser Fall


Ich denke eher das Flo damit weitere Funktionen deiner Dll andeuten wollte.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.04.2005, 18:41 Uhr
RedEagle



wenn das so währe, dann gehts leider immer noch nicht
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.04.2005, 18:51 Uhr
Spacelord
Hoffnungsloser Fall


Hast du die Lib deinem Projekt hinzugefügt?

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.04.2005, 18:58 Uhr
RedEagle



also da ist ne lib entstanden, aber selbst wenn ich die einbinde, gehts nicht
müsste man nicht bei ner *.dll auf die lib verzichten können??
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
19.04.2005, 19:04 Uhr
Spacelord
Hoffnungsloser Fall


Kann man schon,aber zum Entwickeln ist die lib sehr praktisch.Damit bastelt der Linker sämtliche Verweise auf Funktionen aus der Dll selber und du kannst in deinem Programm mit den Dll Funktionen ganz normal arbeiten.

Was verstehst du denn unter einbinden?
Bekommst du Linker oder Compiler Fehler?

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: