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

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

1

24.03.2006, 21:10

Pfad zu einer DLL selbst definieren?

Zitat

DLLs gehören entweder in den Windows Ordner oder eben in den gleichen Ordner wie die ausführende Exe.

Gibt es da noch andere Möglichkeiten? Würde gerne alle DLLs in einem Unterordner verpacken, relativ zur Exe.

Ich rede dabei nicht von selbst erstellten DLLs, sondern von größeren bekannten Bibliotheken (TriBase, Irrlicht, Rak.Net oder was auch immer).

Hoffe es kam rüber was ich meine ^^

Anonymous

unregistriert

2

24.03.2006, 21:25

LoadLibrary, damit kannste Pfade angeben, geht aber nur für dynamisch geladene DLLs

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

3

24.03.2006, 21:35

Ich müsste mich ergo durch den Source der DLLs wühlen und dann dafür sorgen das sie sich nicht selbst bei Programmstart initialisieren?

Danach dann eben wieder kompilieren und mitliefern, oder seh ich was falsch?

Anonymous

unregistriert

4

24.03.2006, 21:36

Das Gurke
DLLs sind ja für das dynamische laden da, sowie für COM, daher gibt es sowas nicht.

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

5

24.03.2006, 21:41

Nein, das meinte ich nicht. Mit kompilieren meine ich nicht die DLL sozusagen mit der exe zusammenzuschmeissen.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
    // GANZ ZUERST

    // Die Librarys einladen

    LoadLibrary("bin/Irrlicht.dll");

    // More Source following

}

Das Programm bricht trotzdem mit einem Lapidaren "DLL nicht gefunden" ab. Ergo dürfte das ja heissen das schon zu einem vorherigen Zeitpunkt die DLL versucht wird einzuladen.

Und um das zu entfernen müsste ich dann doch die DLL als solche neu kompilieren?

6

24.03.2006, 21:44

Nein... das heißt nur das du entweder:
1. Die Library gelinkt hast.
2. Damit ne andere Library gemeint ist
3. usw
4. und so fort...
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

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

7

24.03.2006, 21:52

Das Programm ging vorher und ich hab nur die Irrlicht.dll in einen "bin" Ordner verschoben. Diese wird nun nicht mehr gefunden, trotz der Codezeile.

Ich bin nun verwirrt: Sollte das doch so gehen wie von mir gepostet ???

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

8

25.03.2006, 16:08

du hast wahrscheinlich die .lib noch gelinkt...
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

9

26.03.2006, 17:24

Ohne die Lib gibts Linkerfehler.

C-/C++-Quelltext

1
2
IrrInit.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) class irr::IrrlichtDevice * __cdecl irr::createDevice(enum irr::video::E_DRIVER_TYPE,class irr::core::dimension2d<int> const &,unsigned int,bool,bool,bool,class irr::IEventReceiver *,char const *)" (__imp_?createDevice@irr@@YAPAVIrrlichtDevice@1@W4E_DRIVER_TYPE@video@1@ABV?$dimension2d@H@core@1@I_N22PAVIEventReceiver@1@PBD@Z) referenced in function "int __cdecl IrrInit_Init(void)" (?IrrInit_Init@@YAHXZ)
.\Release/Bomberman.exe : fatal error LNK1120: 1 unresolved externals

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

10

26.03.2006, 18:25

wenn du ne dll dynamisch linken willst, dann darfst du nich einfach die headerdatei übernehmen. du musst stattdessen funktionspointer erstellen und denen dann mit GetProcAddress werte zuweisen...

such mit google mal nach nen paar tutorials...

ich kann dir wenn du willst auch mal nen altes verschlüsselungsprogramm von mir schicken. das linkt auch dlls dynamisch.
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Werbeanzeige