INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

aus einem Library Import Installer machen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

17.03.2016, 08:55
Beitrag #1

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
aus einem Library Import Installer machen
Hallo Zusammen,


ich habe einen C++ Applikation --> daraus habe ich C-Wrapper erstellt und in Labvien importiert (DLL Library Import).
Jetzt möchte ich aus dieses Interface einen richtigen installer erstellen.
Meine Frage ist:
Bei Solche Anwendung worauf muss ich achten?
z.B die Abhängige DLLs werden dann automatische von dieses Installer in der richtigen Pfad kopiert?
Gibt es spezielle Technik, die ich anwenden muss bei solchen Anwendungen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.03.2016, 10:39 (Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2016 10:42 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: aus einem Library Import Installer machen
(17.03.2016 08:55 )galilio schrieb:  Hallo Zusammen,


ich habe einen C++ Applikation --> daraus habe ich C-Wrapper erstellt und in Labvien importiert (DLL Library Import).
Jetzt möchte ich aus dieses Interface einen richtigen installer erstellen.
Meine Frage ist:
Bei Solche Anwendung worauf muss ich achten?
z.B die Abhängige DLLs werden dann automatische von dieses Installer in der richtigen Pfad kopiert?
Gibt es spezielle Technik, die ich anwenden muss bei solchen Anwendungen?

Dein Installer hat keine Ahnung was eine DLL genau ist und kann deshalb auch nicht automatisch die Abhängigkeiten bestimmen und installieren. Das musst Du ihm beim Erstellen schon ausdrücklich sagen.

Wohin Du die DLLs installierst ist eine andere Frage. Grundsätzlich sucht Windows DLLs nur an ein paar bestimmten Stellen. Die am praktischsten ist für ein Executable Installer das Directory in dem das Executable selbst liegt. Für eine LabVIEW Entwickellibrary die Benützer innerhalb von LabVIEW selber benützen können ist das einiges komplizierter. Diese DLLs ins selbe Directory kopieren wo LabVIEW.exe liegt funktioniert zwar ist aber extreme hässlich.

Selber löse ich das meist so dass mein Wrapper selber explizit den Import macht durch Verwendung von LoadLibrary() und GetProcAddress() und die Library unter anderem aus dem selben Verzeichnis zu laden versucht dann wo meine Wrapper-DLL ist, aber das ist einiges an Programmieraufwand.

Die zweitbeste Lösung ist um diese DLLs in das <System> Directory zu installieren, aber das hat Konfliktpotential wenn eine andere Applikation für dieselben DLLs dasselbe tut, wenn dann Versionsinkompatibilitäten zwischen diesen DLLs bestehen.

Die letzte Möglichkeit ist um diese DLLs irgendwohin zu installieren und den Pfad während der Installation zur PATH Umgebungsvariable hinzuzufügen. Das ist auch nicht so schön da jede Environmentvariable maximal 1024 Character haben kann und wenn Du verschiedene Tools installiert hast kann das schon mal erreicht warden. Sobald die PATH Environmentvariable länger wird, findet Windows die meisten der eingebauten Programme auch nicht mehr!!!

Falls Du eine LabVIEW Library entwickelst musst Du in jedem Fall in Deiner Dokumentation genau erklären wie Deine DLL Abhängigkeiten sind und wie man diese in der Applikation Build Spezification konfigurieren muss, wenn ein Benützer Deine Library in einer eigenen Applikation einbauen und diese dann auf andere Computer installieren will.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.03.2016, 16:03
Beitrag #3

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: aus einem Library Import Installer machen
Hallo Rolf,


danke für deine Antwort.
Bei der Erstellung der Installer wie soll ich ambesten vorgehen?
Soll ich einen Projeckt erstellen und die Library importieren und step für step der Logik programmieren.
Gibt es eigentlich einen vorgeschrieben vorgehen, die man nehmen muss?

Warum ich das frage:
ich habe zwei variante erstellt bzw was habe ich gemacht:

1)Variante Nr:1
In gleichen Ordner wo die importierte Library steht einen Main.vi erstellt und die importierte vi miteinander verbindet.
Alle importierte Funktionen könnten aufgerufen und richtig ausgeführt werden.

2) Variante Nr:2
einen projekt erstellt aber nicht gespeichert in gleichen Ordner wo die importierte Library ist also in einen anderen Ordner.
Ich habe dann die Library im Projekt importiert.Als nächste einen Main.vi in prjekt erstellt und die logik wie in Variante1 programmiert.
Es funktioniert nicht ich bekomme die Fehlermeldungsnummer:1097


Was mache ich dann falsch?

bestimmt alles :-(
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.03.2016, 20:18
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: aus einem Library Import Installer machen

Akzeptierte Lösung

(31.03.2016 16:03 )galilio schrieb:  Hallo Rolf,


danke für deine Antwort.
Bei der Erstellung der Installer wie soll ich ambesten vorgehen?
Soll ich einen Projeckt erstellen und die Library importieren und step für step der Logik programmieren.
Gibt es eigentlich einen vorgeschrieben vorgehen, die man nehmen muss?

Warum ich das frage:
ich habe zwei variante erstellt bzw was habe ich gemacht:

1)Variante Nr:1
In gleichen Ordner wo die importierte Library steht einen Main.vi erstellt und die importierte vi miteinander verbindet.
Alle importierte Funktionen könnten aufgerufen und richtig ausgeführt werden.

2) Variante Nr:2
einen projekt erstellt aber nicht gespeichert in gleichen Ordner wo die importierte Library ist also in einen anderen Ordner.
Ich habe dann die Library im Projekt importiert.Als nächste einen Main.vi in prjekt erstellt und die logik wie in Variante1 programmiert.
Es funktioniert nicht ich bekomme die Fehlermeldungsnummer:1097


Was mache ich dann falsch?

bestimmt alles :-(

Um zu sagen was Du falsch machst haben wir grundsätzlich zuwenig Informationen.

Aber ich habe so meine Vermutung. Deine DLL hat noch andere Abhängigkeiten in Form einer DLL. Diese liegen alle im selben Ordner. LabVIEW registriert bei Windows als extra Suchpfad für DLLs auch noch das Directory wo das aktuelle Projekt abgespeichert ist. Wenn Du dann die DLL aufrufst versucht die die andere(n) DLLs zu laden. Wenn das Projekt im gleichen Verzeichnis ist wie die sekundären DLLs, findet Windows diese. Anders nicht.

Die Lösung ist aber nicht um die sekundären DLLs alle ins Projekt Directory zu legen, denn wenn Du Deine Library später wieder in einem anderen Projekt verwenden willst, musst Du die DLLs wiederum alle rumkopieren. Du musst diese DLLs irgendwo installieren wo Windows sie finden kann. Wo das am besten ist lässt sich nicht einfach so sagen ohne zu wissen was diese DLLs sind.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.04.2016, 12:50
Beitrag #5

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: aus einem Library Import Installer machen
(31.03.2016 20:18 )rolfk schrieb:  Um zu sagen was Du falsch machst haben wir grundsätzlich zuwenig Informationen.

Aber ich habe so meine Vermutung. Deine DLL hat noch andere Abhängigkeiten in Form einer DLL. Diese liegen alle im selben Ordner. LabVIEW registriert bei Windows als extra Suchpfad für DLLs auch noch das Directory wo das aktuelle Projekt abgespeichert ist. Wenn Du dann die DLL aufrufst versucht die die andere(n) DLLs zu laden. Wenn das Projekt im gleichen Verzeichnis ist wie die sekundären DLLs, findet Windows diese. Anders nicht.

Die Lösung ist aber nicht um die sekundären DLLs alle ins Projekt Directory zu legen, denn wenn Du Deine Library später wieder in einem anderen Projekt verwenden willst, musst Du die DLLs wiederum alle rumkopieren. Du musst diese DLLs irgendwo installieren wo Windows sie finden kann. Wo das am besten ist lässt sich nicht einfach so sagen ohne zu wissen was diese DLLs sind.


Hallo Rolf,

du hast halt wie immer alles auf dem Punkt gebracht. Es stimmt bei mir liegen alle abhängige DLLs in gleichen Ordner wo die Labview.exe existiert.

Die Dlls liegen alle in gleichen Ordner, wo die Labview.exe ist. Es ist nun einen Vorübergehen so dann werden alle, wenn der installer fertig ist alle in einem extra Ordner mit dem Installer.

(31.03.2016 20:18 )rolfk schrieb:  Wo das am besten ist lässt sich nicht einfach so sagen ohne zu wissen was diese DLLs sind.

Die abhängige DLLs sind als Librarys für die importierte Funtionen. Also die müssen mitimportiert werden.

Wo sollen deine Meinung die DLLs eingelegt werden, damit es diese Konflikt vermieden werden?

Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.04.2016, 09:32
Beitrag #6

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: aus einem Library Import Installer machen
Hi Zusammen,

es hat sich erledigt.
Es ist genau wie Rolf schrieb.
Es gab eine Verletzung der Abhängigkeit zwischen der DLL.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  USB Relay DLL import hansi9990 3 10.209 02.09.2019 09:15
Letzter Beitrag: hansi9990
  DLL Import externe Struktur in Header bekommen hansi9990 15 24.483 30.09.2016 17:20
Letzter Beitrag: hansi9990
  Labview Import / DLL debuggen galilio 36 54.091 10.11.2015 21:42
Letzter Beitrag: rolfk
  SSH library läuft nur wenn geladen hansi9990 0 8.421 29.07.2015 21:12
Letzter Beitrag: hansi9990
  DLL Import automatisieren CS 3 8.069 13.02.2015 10:53
Letzter Beitrag: CS
  Import Assistent findet Funktionen nicht TDO 1 5.635 11.12.2014 16:24
Letzter Beitrag: jg

Gehe zu: