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

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

1

04.09.2009, 16:06

DLL zu LIB ?

Hallo

ich möchte eine fremde DLL (open source) in mein projekt einbinden. diese
brauche ich nur für einen kleinen teil des projektes. damit der endnutzer
nicht immer die DLL minehmen soll, und da es vllt versionenkonflikte
gibt, soll die DLL statisch in das projekt. das mag dem nutzen von DLLs
wiedersprechen, aber hier ist es gerechtfertigt.

dafür sehe ich 2 möglichkeiten:

1. die DLL zu einer LIB umwandlen. keine importlib sondern eine echte LIB

2. die DLL als ressource einbinden und irgentwie statisch einlinken

gibt es da eine möglichkeit aus dem ganzen EINE datei zu machen?
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

2

04.09.2009, 16:11

Wenn das Projekt OpenSource ist musst du es doch nur als statische .lib kompilieren. Wenn du die dann mit deiner .exe beim kompilieren verknüpfst schmeißt der Linker für dich automatisch den Code der ne referenziert wird raus.

Ausnahme ist glaube ich wenn man eine dll erstellt, aber ich wette das Verhalten lässt sich auch noch irgendwie anders steuern.

Da erst was zu disassemblieren und dann wieder zu linken halte ich für den wesentlich unpraktischeren Weg. Man muss ja nicht manuell machen, was der Computer automatisch macht ;)

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

3

04.09.2009, 18:47

das problem ist aber, dass die DLL von vielen anderen quelltexten in
verschiedenen versionen abhängt. das alles richtig einziustellen, für jede
andere lib noch ein eigenes projekt aufmachen....

dachte das das schneller geht, wenn man die binarys schon hat.
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

4

04.09.2009, 20:33

Lässt die Lizenz das denn zu?
Um welche DLL handelt es sich denn?
Lieber dumm fragen, als dumm bleiben!

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

5

04.09.2009, 22:06

die lizenz sollte das zulassen, es handelt sich um CEGUI.

kompilieren kann ich es aufgrund eines vc++ bugs nicht (preprocessorbug)
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

6

05.09.2009, 21:39

vielleicht kennt jemand einen workaround um den bug zu umgehen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
  /* use preprocessor's argument prescan to expand three arguments into six */
#define OTV_NEST3( x, y, z )  OTV_NEST3_( x, y, z )
#define OTV_NEST3_( func0, name0, func1, name1, func2, name2 ) \
          FT_BEGIN_STMNT                                       \
            valid->nesting_level = 0;                          \
            valid->func[0]       = func0;                      \
            valid->func[1]       = func1;                      \
            valid->func[2]       = func2;                      \
          FT_END_STMNT


gibt:

Quellcode

1
2
warning C4003: not enough actual parameters for macro 'OTV_NEST3_'
error C2059: syntax error : ';'
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

7

06.09.2009, 15:35

Wie soll der Präprozessor das denn bitte machen? So wie ich das sehe ist das richtig, da nen Fehler zu schmeißen.
Du kannst versuchen den Präprozessor von gcc per Hand zu benutzen (ist ne eigene exe) oder den Code einfach auskommentieren. Der scheint nicht essentiell zu sein.

DLL aus Resource laden geht nicht, du kannst eine Datei aus der Resource aber temporär auf die Festplatte speichern und dann mit LoadLibrary laden.

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

8

06.09.2009, 21:56

ok habs ausdokumentiert und es läuft. (zum teil)

danke bis hier erstmal.

ps: nutzt einer CEGUI ?
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

goldfisch007

Alter Hase

Beiträge: 446

Wohnort: Süden von Berlin

  • Private Nachricht senden

9

06.09.2009, 22:21

schreib ma nekturion an...
der hat da glaub ich nen bissel ahnung
Wir bauen auf und reißen nieder, so ham wir Arbeit ima wieder...
--------------------
http://www.piratenpartei.de/tmp/images/Slogans_5_0.png
--------------------
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender, geklaut von Helmut xD)

10

06.09.2009, 23:20

Joar ich nutze CEGUI.

Werbeanzeige