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

Swoerm

Alter Hase

  • »Swoerm« ist der Autor dieses Themas

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

1

09.06.2013, 15:08

DLL in Visual C++ 2010 Express linken

Ich bin mir nicht ganz sicher ob es in diese Kategorie gehört aber hier meine Frage:

Ich frage mich ob es geht in Visual C++ 2010 Express in den Projekteinstellungen eine DLL wie eine lib zu linken (oder so ähnlich)?

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

2

09.06.2013, 15:11

Nein. Eine DLL ist eine Erfindung des Betriebssystems, die hat nix mit Visual Studio oder Libs zu tun. Aber: wenn man eine DLL kompiliert, wird dabei üblicherweise auch eine gleichnamige Lib dazu erstellt, die den Code enthält, der beim Starten die DLL lädt und die Schnittstelle extrahiert. Gegen diese Lib musst Du linken, um die DLL anzusprechen.

[edit]Du kannst die DLL auch manuell in Deinem Programm laden per LoadLibrary() und dann die Funktionen, die Du brauchst, manuell extrahieren.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

3

09.06.2013, 17:47

Nein. Eine DLL ist eine Erfindung des Betriebssystems, die hat nix mit Visual Studio oder Libs zu tun. Aber: wenn man eine DLL kompiliert, wird dabei üblicherweise auch eine gleichnamige Lib dazu erstellt, die den Code enthält, der beim Starten die DLL lädt und die Schnittstelle extrahiert. Gegen diese Lib musst Du linken, um die DLL anzusprechen.

Der Visual Studio Teil stimmt zwar, aber allgemein gültig ist das nicht. MinGW linkt z.B. auch problemlos direkt gegen eine DLL, wenn diese ebenfalls mit MinGW erzeugt wurde.

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

4

09.06.2013, 18:04

Theoretisch steht dem nichts im Wege, ja. Immerhin kannst Du alle exportierten Funktionen einer DLL nach dem Laden abfragen, und mit etwas Mühe kann der Compiler dann Aufrufe für die dazugehörigen Funktionen erzeugen.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Swoerm

Alter Hase

  • »Swoerm« ist der Autor dieses Themas

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

5

09.06.2013, 21:31

Das ganze hört sich für mich nach zu viel Aufwand an.
Mir ging es nur auf die Nerven immer die ganzen DLL in den Ordner des Programmes zu kopieren.
Daher wollte ich fragen ob ich mir die Arbeit nicht sparen könnte aber es sieht ja leider nicht danach aus. :(


Danke an alle die geantwortet haben.

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

6

09.06.2013, 23:52

Dazu gibt es statisches Linken. Kann ich empfehlen, das spart Rechenzeit, vermeidet zusätzliche Dateien und erlaubt dem Linker bessere Optimierungen. Allerdings muss Du die Lib für statisches Linken gebaut haben, eine DLL ist nur für dynamisches Linken geeignet.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Werbeanzeige