Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » DLL import und export simultan

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
20.09.2011, 14:34 Uhr
~huck
Gast


Hallo Forum,

ich habe eine Solution, mit diversen Projekten:
--> 1 Projekt als *.exe, dort starte ich das ganze
--> alle anderen Projekte als *.dll

Nun habe ich eine *.dll so erweitert, dass sie wie gehabt mit der *.exe kommuniziert und absofort mit einer anderen *.dll.
Sprich gleichzeitig dllimport und dllexport...

Eher nicht? Denn ich bekomme nun "LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall... "
Es sei denn ich hjabe was nicht beachtet?

Vielen Dank für alle Tipps.. Gruß Huck
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.09.2011, 20:07 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,

naja versteh ich das richtig?

Deine Exe läd eine DLL und deine DLL läd eine weitere DLL?

Jedenfalls solltest du normalerweise von deinen DLLs folgendermaßen exportieren

DLL1:
(im vs Projektname PROJECTDLL1 - d.h das define PROJECTDLL1_EXPORTED wird automatisch vom VC generiert, genauen namen bitte in den projekteinstellungen nachsehen)

C++:

#ifdef PROJECTDLL1_EXPORTED
#define PROJECTDLL1API __declspec(dllexport)
#else
#define PROJECTDLL1API __declspec(dllimport)
#endif

//...

#include "dllproject2.h"

PROJECTDLL1API void my_exported_function1()
{
   // hier rufen wir die 2te dll auf
   my_exported_function2();
}




DLL2 schaut dann simultan aus:

C++:

#ifdef PROJECTDLL2_EXPORTED
#define PROJECTDLL2API __declspec(dllexport)
#else
#define PROJECTDLL2API __declspec(dllimport)
#endif

//...

PROJECTDLL2API void my_exported_function2()
{
   // ...
}





EXE:

C++:
#include "dllproject1.h"

int main(void)
{
   my_exported_function1();
}




Der Compiler macht dann intern folgendes:

für die DLL2 ist PROJECTDLL2API auf export gesetzt.
für die DLL1 ist PROJECTDLL1API auf export gesetzt, und PROJECTDLL2API auf import.
für die Exe ist PROJECTDLL1API auf import gesetzt.

So kann nun die Exe die DLL1 laden, und DLL1 die DLL2, ohne das du dem Compiler versehentlich sagst, er soll alle DLL2 symbole in DLL1 nochmals exportieren.
--
class God : public ChuckNorris { };

Dieser Post wurde am 21.09.2011 um 20:09 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.09.2011, 08:58 Uhr
~huck
Gast


Correct a mundo. Ich danke und werde es ausprobieren.. Thnx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


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: