Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Sheddex

unregistriert

11

16.09.2007, 19:02

Zitat von »"Faule Socke"«


Wie wäre es wenn wir dieses meisterwerk ins FAQ tun? dann würde es sich lohnen die rechtschreibfehler zu korrigieren.
Socke


Wozu das denn? Zu dem Thema habe ich mal ein ganzes Tutorial geschrieben... hier ist es.
Allerdings sollte ich es mal überarbeiten...

12

16.09.2007, 19:03

C-/C++-Quelltext

1
2
3
4
5
#ifndef DLLNAME_EXPORT
  #define DLLNAME_API __declspec(dllimport)
#else
  #define DLLNAME_API __declspec(dllexport)
#endif 
Da bei Einstellungen -> C++ -> Preprozessor -> Preprozessor Definitionen "DLLNAME_EXPORT" angegeben ist(bei einem Standard-DLL-Projekt), wird innerhalb deiner DLL dein Makro DLLNAME_API durch __declspec(dllimport) ersetzt. Wenn du den Header dann außerhalb deines Projektes einbindest und darauf verzichtest dem Preprozessort "DLLNAME_EXPORT" zu definieren, wird das Makro durch __declspec(dllexport) ersetzt.
_______________________________________________________________
Referenzen
[*] Importing into an Application Using __declspec(dllimport), 2007-09-16, Microsoft
[*] Importing and Exporting, 2007-09-16, Microsoft
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

13

16.09.2007, 19:12

hmm habe ich die frage so unklar gestellt ??? :( :( :(


was ich meine:
Wie ist es möglich eine LIB in eine DLL hineinzu linken,
so das die LIB in der DLL enthalten ist ?????

14

16.09.2007, 19:17

Öhm einfach die Library statisch machen und bei der DLL dann mit #pragma comment hinzulinken(Oder per Einstellungs-Dialog).
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

15

16.09.2007, 19:52

Ja das habe ich ja versucht,
aber die statische Library wird dann zur EXE mit
hinzugelinkt und nicht zur dll ! :( :(

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

16.09.2007, 20:09

wie hast dus versucht?

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

17

17.09.2007, 13:55

Also...
1) als erstes habe ich ein Projekt erstellt,
welches eine Lib mit der funktion sayHello()
enthält.... compiled ... fertig.

2) als zweites habe ich ein Projekt gemacht, welches
eine Dll erzeugt und in der main-funktion wird
sayHello() aus der lib aufgerufen... compiled ... fertig.

3) als letztes habe ich ein Projekt gemacht, dass eine exe erstellen soll.
hier habe ich die dll mit eingebunden ( indem ich ihre automatisch erstellte Lib eingebunden habe )
... compiled .... ERROR

Damit es funktioniert musste ich noch die erste LIB mit einbinden.

-------

Aber wie mache ich es richtig, so dass die lib mit in der dll gespeichert wird und nicht in der exe ?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

17.09.2007, 14:10

ich denk, du müsstest zumindest die funktionen aus lib in der dll exportieren (also mit __declspec(dllexport) markieren, oder über ein .def file) und in der exe dann natürlich importieren. ka inwiefern das mit dllexport geht

btw:

1) warum willst du unbedingt die lib zur dll linken. wo du doch den code der lib hast, brauchst du ja diesen einfach nur zum dll projekt hinzuzufügen und ein wenig anzupassen.

2) was versprichst du dir von einer main() funktion in einer dll?

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

19

17.09.2007, 14:15

sorry
aber ich habe jetzt noch nicht ganz verstanden,
wie du das meinst... :( :(

zu 1)
Dann müsste ich das ja für jede lib machen.
Es ist doch bestimmt viel einfacher die lib zur dll
zu linken

zu 2)
Naja die main funktion wird doch aufgerufen, wenn die dll geladen wird, oder ?
ich habe das einfach direkt in die main reingepackt. war ja nur nen test...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

17.09.2007, 14:24

Zitat von »"Databyte"«

Dann müsste ich das ja für jede lib machen.
Es ist doch bestimmt viel einfacher die lib zur dll
zu linken


was hindert dich daran, den code von mehreren libs zum dll projekt hinzuzufügen?

Zitat von »"Databyte"«

Naja die main funktion wird doch aufgerufen, wenn die dll geladen wird, oder ?


nein, eine DllMain funktion wird beim laden der dll aufgerufen. wie genau die auszusehen hat verrät die MSDN.

Werbeanzeige