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

Jonsen

Frischling

  • »Jonsen« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Unter der Brücke

  • Private Nachricht senden

1

05.02.2009, 18:21

Statisches Linken von DLLs

Hi

Ich hab bis jetzt schon oft das Problem gehabt, dass Programme auf meinem PC funktioniert haben, auf anderen Rechnern aber nicht!

Dann hab ich diese Anleitung zum statischen Linken von dlls gefunden und die Eigenschaften in VStudio2008 entsprechend eingestellt:

Runtimelibrary auf Multithreaded(-Debug)
ATL nicht umgestellt
MFC nicht umgestellt

Das funktioniert aber nur, wenn ich eine einfache Anwendung (zB nur ne MessageBoxausgabe oder sowas) habe!
Sobald ich etwas "mehr" machen will (zum Beispiel das Beipsielprogramm mit Index und Vertexbuffer, Kap.2) klappt das schon nicht mehr :(

Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
1>------ Erstellen gestartet: Projekt: 5_VertexuIndexbuffer_KONSOLE, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>main.cpp
1>f:\programmierung\projekte\buch_aufgaben\5_vertex und indexbuffer\2_das erste dreieck\funktionen.h(33) : warning C4800: 'UINT': Variable wird auf booleschen Wert ('True' oder 'False') gesetzt (Auswirkungen auf Leistungsverhalten möglich)
1>f:\programmierung\projekte\buch_aufgaben\5_vertex und indexbuffer\2_das erste dreieck\main.cpp(99) : warning C4101: 'fAspect': Unreferenzierte lokale Variable
1>Verknüpfen...
1>Das Manifest wird eingebettet...
1>mt.exe : general error c101008a: Failed to save the updated manifest to the file ".\Debug\5_VertexuIndexbuffer_KONSOLE.exe.embed.manifest". Falscher Parameter.
1>Das Buildprotokoll wurde unter "file://f:\Programmierung\Projekte\buch_aufgaben\5_VertexuIndexbuffer_KONSOLE\5_VertexuIndexbuffer_KONSOLE\Debug\BuildLog.htm" gespeichert.
1>5_VertexuIndexbuffer_KONSOLE - 1 Fehler, 2 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Kann mir jemand sagen wie man das "richtig" macht oder ob das überhaupt damit geht?

Danke im Voraus
Jonsen
-=:{( <=> )}:=-

2

05.02.2009, 18:31

Versuch es mal mit dem Release-Build (/Mt).

Die Vorgehensweise betrifft übrings nur die C++ Runtimes.

Das "mehr" betrifft DirectX.
Also braucht der User bzw. der andere PC die entsprechenden Runtimes dafür.
fka tm

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

05.02.2009, 22:46

Das "D" in DLL steht für "dynamic". DLLs statisch zu linken ist darum schon ein Widerspruch in sich.
Was du statisch linkst, ist die Runtime, keine DLL!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

06.02.2009, 08:49

Zitat

1>mt.exe : general error c101008a: Failed to save the updated manifest to the file


kanns sein dass deine exe sich nicht richtig beendet hat und im hintergrund noch n prozess davon läuft? dann kann der linker die datei nämlich net beschreiben, was den fehler da erklären würd...

oder hast du vielleicht im manifest was umgeschrieben oder verwendest du irgendwo die /MANIFESTDEPENDENCY linkeroption oder sowas? wenn ja dann zeig mal deine command line (bzw. das was in f:\Programmierung\Projekte\buch_aufgaben\5_VertexuIndexbuffer_KONSOLE\5_VertexuIndexbuffer_KONSOLE\Debug\BuildLog.htm steht)

5

06.02.2009, 12:16

Den Manifest-Fehler hatte ich schon häufig. Neu kompilieren hilft meistens, manchmal muss man auch die ganze Projektmappe neu erstellen...

Jonsen

Frischling

  • »Jonsen« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Unter der Brücke

  • Private Nachricht senden

6

06.02.2009, 20:27

Hi

Danke für die Antworten!

Es funktioniert - aber nur bei "Multithreaded".
in der Version "Multithreaded-Debug" kommt immernoch der Fehler!

@dot:

Zitat

kanns sein dass deine exe sich nicht richtig beendet hat und im hintergrund noch n prozess davon läuft? dann kann der linker die datei nämlich net beschreiben, was den fehler da erklären würd...

Nein, kann nicht sein ;)

Zitat

oder hast du vielleicht im manifest was umgeschrieben ...

Nein, hab ich nicht!

bye
Jonsen
-=:{( <=> )}:=-

Werbeanzeige