Aufruf EXE funktioniert nicht
-
Ach so... Du musst Deiner DLL auch noch eine Manifest-Resource mitgeben!
Wird ein Manifest in die DLL eingebettet? Steht was von ".manifest." im Debug/Release-Verzeichnis der DLL?hast Du das einbetten des Manifests deaktiviert?
-
miniDLL\Debug hat nur eine *manifest*-datei namens:
- miniDLL.dll.intermediate.manifestin der steht:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> </dependentAssembly> </dependency> </assembly>
Und in Projekteigenschaften/Konfikurationseigenschaften/Linker/Manifestdatei ist die Option
Manifest generieren auf Ja eingestellt.Folgende DLL's liegen bei mir unter:
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c
- msvcm80d.dll
- msvcp80d.dll
- msvcr80d.dllWenn das weiterhilft
-
Ich habs. Geschaft.
Zusammenfassung:
Der fremde Rechner benötigt:
- Microsoft .NET Framework 2.0 Redistributable (x86)
- Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)
Das ist klar.Zu beachten ist, das ein Debug-Projekt andere DLL's braucht als ein Release-Projekt und das Paket "Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)" installiert nur die DLL's für Release.
Das heißt das die Anwendung (die EXE) aber auch die DLL im Release-Modus erstellt werden muss.Welche DLL's auf dem Fremden Rechner fehlen, ermittelt man mit Depency Walker (http://www.dependencywalker.com/). Wenn dann die fehlende DLL (wie bei mir) ein 'D' am ende hat (z.B.: MSVCP80D.DLL), dann nützt auch ein das Paket "Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)" nicht. Denn wie schon gesagt es installiert nur Release-DLL's.
Hierzu nützliche Links:
http://msdn2.microsoft.com/de-de/library/zebw5zk9(VS.80).aspx - Bereitstellung (C++) Hier die Links unter beachten.
http://msdn2.microsoft.com/de-de/library/8kche8ah(VS.80).aspx - Ermitteln der neu zu verteilenden DLLs
http://msdn2.microsoft.com/de-de/library/ms235299(VS.80).aspx - Verteilen von Visual C++-Dateien
http://msdn2.microsoft.com/de-de/library/ms235285(VS.80).aspx - Bereitstellungsbeispiele
-
agent schrieb:
Zu beachten ist, das ein Debug-Projekt andere DLL's braucht als ein Release-Projekt
Nein!
Zu beachten ist: Du darfst eine EXE/DLL, welche mit Debug erstellt wurde *nicht* weitergeben, geschweige denn auf einem anderen Rechner (ohne VS) installieren/ausführen!Les mal die Eula durch!
-
Ach so, noch was.
Wie würde meine DLL mit einen Einstiegspunkt aussehen?
Und meine zweite frage, muss ich einen Einstiegspunkt haben? Wenn ja, wieso funzt es auch ohne? Oder wann muss ich einen Einstiegspunkt haben.Ach so, wollte mich zu meinem vorherigen Problem bedanken. Ihr ward echt super, Thanks aber auch.
-
Der Einstiegspunkt wird von der CRT selber erzeugt, wenn Du keinen angibst (auch wenn Du einen angibst, ist der Einstiegspunkt immer die CRT )
-
Jochen Kalmbach schrieb:
agent schrieb:
Zu beachten ist, das ein Debug-Projekt andere DLL's braucht als ein Release-Projekt
Nein!
Zu beachten ist: Du darfst eine EXE/DLL, welche mit Debug erstellt wurde *nicht* weitergeben, geschweige denn auf einem anderen Rechner (ohne VS) installieren/ausführen!Les mal die Eula durch!
Oder halt so. Meine Aussage ist aber nicht falsch.
-
Knuddlbaer schrieb:
Die dll wird aus mehr als dieser einen Funktion bestehen. Die Dll MUSS einen Einstiegspunkt haben.
Dann versteh ich das nicht.
-
Halbwissen meinerseits.
Es ist sehr lange her als ich das Thema native DLL schreiben vor mir hatte. Der Einstiegspunkt DLLMain musste dort immer angegeben werden, bei dem damaligen System gab es nichts, was einem diesen Arbeit abnimmt.
Aus heutiger Sicht ist die Aussage zwar noch richtig (das ein Einstiegspunkt existiert), aber der Gedanke dahinter (DLLMain fehlt) völlig falsch. Streich das einfach beim Lesen
"Manifest" ist für mich noch ein Begriff mit dem ich mich auseinandersetzen muss.
-
Knuddlbaer schrieb:
"Manifest" ist für mich noch ein Begriff mit dem ich mich auseinandersetzen muss.
Ich auch
Also nochmal Thanks für alles. Ich komme bestimmt wieder