Eigene EXE findet DLL nicht, nur wenn es im Verzeichnis der EXE ist
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 32 Antworten in diesem Thema. Der letzte Beitrag () ist von Splamy.
-
-
Hi,
ich weiß nich ob dir meine Antwort hilft, da sie nicht ganz genau das macht was du willst...
Man kann eine DLL in ein Prgramm nach dem kompilieren in das Programm miteinbinden mit dem Programm ILMerge
aus dem Thread: hier
hat jedenfalls bei meinem Programm super geklapptdie dll muss jetzt nicht mehr dabei sein.
also wenn du die dll hast, kannst du sie einfach einbinden, allerdings weiß ich auch nicht ob es mit mehreren dlls nacheinander geht
Wenn du das Programm installiert hast, im DOS-Fenster das hier eigeben:
*edit*
hab die installationsdatei in Anhang gestellt -
-
-
Also ich weiss nicht genau wie das bei VB ist, aber bei C++ ist es so, dass wenn eine DLL dynamisch gelinkt wird und kein genauer pfad eingegeben wird wird zuerst im system32 ordner gesucht, und dann im aktuellen Ordner des Programms..
wenn deine dll eh in einem bestimmten ordner liegen soll, ausser dem programm ordner und VB genau so vorgeht wie C++ wieso legst du sie dann nicht im system32 ordner ab? Probier doch mit deinem ursprünglichem code mal aus ob die dll gefunden wird wenn sie im system32 ordner liegt, dann weisst du obs geht
lg leo
//Edit:
Nebenbei bemerkt ist es allg. üblich dass wenn eine DLL mitgeliefert werden muss, die in keinem standard LibraryPackage dabei ist (wie den msvc redistributables oder den .net frameworks), sie im Programmordner mitgeliefert werden. Das stört normalerweise auch keinen, wesswegen mich interessieren würde wieso du die dll in einem anderen ordner haben willst?Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „leonor“ ()
-
-
Noch eine möglichkeit die evtl klappen könnte wäre die DLL, in welchem ordner sie nun auch liegen mag, mit dem DLLRegisterServer zu registrieren.
Um eine DLL zu registrieren, klickt man auf "Start->Ausführen" und gibt dort (zu deinem Beispiel passend) folgenden befehl ein:
Damit sollte die dll von jedem programm in dem angegebenen ordner gefunden werden.
//Edit:
Wenn man das ganze von seinen Usern aber nicht erwarten kann, kann man das auch in einer art Installationsprogramm automatisieren lassen indem man folgende Codezeile ausführen lässt:
Dazu muss sich die dll natürlich in genau dem Ordner befinden der angegeben wurde.Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „leonor“ ()
-
Samus Aran schrieb:
Wenn aC nicht funktioniert, hat der Threadersteller etwas falsch gemacht.
Hallo Samus Aran,
nun, bei der Bedienung des aC ist es sehr schwer etwas falsch zu machen, oder???
Hier die Fehlermeldung, die beim Starten der Exe angezeigt wird. Vielleicht kannst du mir ja dann sagen was ich falsch mache !!!
System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.InvalidOperationException: Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Nicht verifizierbarer Code hat die Richtlinienüberprüfung nicht bestanden. (Ausnahme von HRESULT: 0x80131402). ---> System.IO.FileLoadException: Nicht verifizierbarer Code hat die Richtlinienüberprüfung nicht bestanden. (Ausnahme von HRESULT: 0x80131402)
bei KKAmbOPVergl.Form1..ctor()
--- Ende der internen Ausnahmestapelüberwachung ---
bei KKAmbOPVergl.My.MyProject.MyForms.Create__Instance__[T](T Instance)
bei KKAmbOPVergl.My.MyApplication.OnCreateMainForm()
bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
bei KKAmbOPVergl.My.MyApplication.Main(String[] Args)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
bei assemblyCompressor.Core.subSystem.applicationContext.executeApplication()
Vielen Dank für Deine Hilfe
leonor schrieb:
regsvr32 U:\Daten\Datenbank\System.Data.SQLite.DLL
Vielen Dank leonor, aber auch hier kommt eine Fehlermeldung, die da lautet:
das Modul u:\daten\datenbank\system.data.sqlite.dll wurde geladen, aber der dllregistreserver-Eingangspunkt wurde nicht gefunden
und... dies habe ich auch versucht:
leonor schrieb:
Also ich weiss nicht genau wie das bei VB ist, aber bei C++ ist es so, dass wenn eine DLL dynamisch gelinkt wird und kein genauer pfad eingegeben wird wird zuerst im system32 ordner gesucht, und dann im aktuellen Ordner des Programms..
... geht auch nicht...
Splamy schrieb:
C:\PfadVonILMerge\ILMerge.exe /t:winexe /out:"C:\DeinPfad\DeinAusgabeProgramm.exe" "C:\DeinPfad\DeinProgramm.exe" "C:\DeinPfad\dieDll.dll"
... Vielen Dank Splamy, aber leider funktioniert ILMerge auch nicht...
Schon mal vielen Dank für Eure Hilfe.Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „TheSaint“ ()
-
-
Samus Aran schrieb:
Falls das mit der Bedienung ironisch gemeint war, es ist in der Tat schwer, etwas falsch zu machen.
Was für eine DLL ist das denn? oÔ
Hat der Autor der DLL es vllt. irgendwie so eingerichtet, dass man sie nicht einbinden kann?
Diese Frage kann ich leider nicht beantworten...
Ich habe diese DLL von hier:
Vielen Dank allen für den Versuch mir zu helfen.
Denke komme hier nicht mit weiter und werde es aufgeben.
Nochmals vielen Dank
Viele GrüßéDieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TheSaint“ ()
-
ok, letzter versuch, ich habe die datei system.data.sqlite.dll ein eines meiner programme eingefügt, geht nicht, Fehlermeldung:
habs danach nochmal ausprobiert mit:
C:\Programme\ILMerge\ILMerge.exe /t:winexe /zeroPeKind /out:"C:\blabla\Test.exe" "C:\Pfad\Eingang.exe" "C:\Pfad\system.data.sqlite.dll"
und das einbinden hat tatsächlich geklappt, oder zumindestens gabs keine Fehlermeldung, ob es dann auch ohne dll wirklich klappt weiß ich nicht weil ich kein programm hab das diese dll nutzt ( und selber check ich die auch nicht), aber probiers doch nochmal.
-
-
-
Benutzer online 1
1 Besucher
-
Ähnliche Themen
-
Absturz beim Programm ausführen
wamborambo - - Sonstige Problemstellungen
-
2 Benutzer haben hier geschrieben
- Gast (29)
- jvbsl (4)