2017-05-05 2 views
0

Diese Frage wurde mehrmals auf SO gestellt und beantwortet, aber ich kann die vorgeschlagenen Lösungen nicht für meine Situation verwenden. Ich benutze eine Bibliothek, die von vielen (~ 50) DLLs abhängt. Dies ist Windows 7 x64, Visual Studio 2015, C++.Wie können DLLs während des Debuggens und der Neuverteilung einbezogen werden?

ZIELSETZUNGEN: (1) Geben Sie dem Debugger während der Entwicklung Zugriff auf die erforderlichen DLLs. (2) Stellen Sie zur Bereitstellung die erforderlichen DLLs entweder in einem Windows-Installationsprogramm oder als komprimierte Datei bereit, die in den Ordner der ausführbaren Datei oder in einen anderen Ordner kopiert werden soll. Wenn sich die DLLs nicht im Ordner der ausführbaren Datei befinden, muss das PGM während der Ausführung mitgeteilt werden.

Für (1) habe ich versucht, die Konfigurationseigenschaften/Debugging/Environment-Variable zu ändern, um den Pfad zu den DLLs hinzuzufügen, C: \ ProgramFiles \ Octave \ Octave-4.2.1 \ bin. Dies funktioniert aus irgendeinem Grund nicht.

Bevor ich etwas änderte, war die in der Konfiguration angezeigte Umgebungsvariable $(LocalDebuggerEnvironment), der Evaluated-Wert war PATH=;%PATH% und die Inherited-Werte waren PATH=$(VCRedistPaths)%PATH%.

Nach meinem Eintrag hinzufügen, hatte ich

Umwelt:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH%$(LocalDebuggerEnvironment) 

Mein Eintrag:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH% 

Übernahmewert:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH% 
PATH=;%PATH% 

Geerbte Werte:

PATH=$(VCRedistPaths)%PATH% 

aber das Starten des Debuggers findet die DLLs nicht.

Was ist der richtige Weg, um die Pfadumgebung für den VS-Debugger zu ändern?

Was ist die vorgeschlagene Mittel, um mit Teil (2), Bereitstellung umzugehen?

Antwort

0

Vermutlich fehlt zwischen Ihrem Pfadeintrag und der Umgebungsvariablen %PATH% ein Semikolon. Versuchen:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin;%PATH% 

Eine weitere Option ist Ihre %PATH% in der Systemumgebung, um das Verzeichnis mit DLLs enthalten. Sie müssen Visual Studio neu starten, um die Umgebungsänderungen abzurufen. Diese Option ist wahrscheinlich nicht erforderlich, wenn Sie den Pfad im Debugger korrekt festlegen.

Ihre DLLs können sich im selben Verzeichnis befinden wie Ihr Programm und sie werden in den meisten Fällen vom Programm gefunden. (Es gibt Ausnahmen ...) Sie können here darüber lesen, wie Windows bei der Ausführung verschiedener Programmtypen nach DLLs sucht.

Eine einfache Möglichkeit zu sehen, wo das Programm nach DLLs sucht, ist Process Monitor zu verwenden, um Ihnen in Echtzeit Pfade anzuzeigen, wo das Programm nach DLLs sucht.

+0

Ich habe meinen Eintrag in der Umgebungskonfiguration in PATH = C: \ ProgramFiles \ Octave \ Octave-4.2.1 \ bin geändert;% PATH%; wie vorgeschlagen, und es macht keinen Unterschied. ABER, ich habe auch die Box am unteren Rand "Erben von Eltern oder Projekt Standardeinstellungen", und jetzt gibt es nicht mehr "DLL fehlende" Nachrichten, wenn ich mit dem Debuggen beginnen. Ich habe keine Ahnung, was los ist. Vielleicht hat es etwas mit PATH =;% PATH% zu tun, das in "Evaluated value" erscheint. – Woody20

+0

Probieren Sie den Prozessmonitor aus. Es wird Ihnen helfen, das Problem zu beheben. – Nathan

1

Einige der PATH Umgebungsvariable Verkettungen sehen problematisch aus.

Versuchen Sie, Trennzeichen ; (Semikolon) einzufügen, wo immer eine logische Verkettung von Literalzeichenfolgen und Variablen vorhanden ist.

Zum Beispiel:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH%$(LocalDebuggerEnvironment)

würde:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin;%PATH%;$(LocalDebuggerEnvironment)

und

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH%

würde:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin;%PATH%

und so weiter.

+0

Jetzt möchte ich eine neue env-Variable 'TESSDATA_PREFIX' setzen und eine neue' PATH'-Variable hinzufügen. Als deine Antwort fülle ich es wie folgt aus (https://i.stack.imgur.com/OJOI0.png). Aber ich bekomme eine Fehlerinformation, die zeigt, dass 'TESSDATA_PREFIX' nicht gesetzt werden kann. – yode

+0

@yode Diese Syntax ist (glaube ich) nur Ihre' TESSDATA_PREFIX' zu Ihrer 'PATH'-Zeichenkette hinzuzufügen (die ';' macht nicht das, was Sie tut will es tun). Klicken Sie stattdessen auf das Drop-down-Menü in der Zelle Umgebung und klicken Sie auf 'Bearbeiten ...'. VS öffnet ein Dialogfeld, in dem Sie Variablen hinzufügen können - eine pro Zeile. Zusammen sehen sie wie eine lange Zeichenfolge aus, wenn Sie zur Registerkarte Debuggen zurückkehren. –

+0

Danke, das funktioniert. – yode

Verwandte Themen