LabVIEWForum.de - DLL's und einbinden von C++Code

LabVIEWForum.de

Normale Version: DLL's und einbinden von C++Code
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,
bei mir tut sich folgende Problemstellung auf. Ich soll eine Kamera in LabVIEW einbinden und zwar in ein bereits vorhandenes in LabVIEW erstelltes Messsystem. Dazu werden Funktionen der MAtrox Imaging Library verwendet, da ein Matrox Framegrabber verwendet wird. Diese Schnittstelle wird in C++ geschrieben. In meinem C++ Code funktioniert das auch schon recht gut. MAtrox hat zusätzlich auch noch DLL's mitgeliefert. Meine Frage ist nun, was kann ich damit überhaupt machen? Könnten diese DLL's mir etwas für meine Problembehebung bringen? Was sind DLL'S und bewirken diese? Darüber hinaus habe ich versucht einen einfachen C Code über CIN einzubinden. Aber auch mit den Tuts klappt das nicht wirklich (verwende Visual Studio 2005)Pccrash. HAbe gesehen, dass mein Vorgänger eine ältere Kamera eingebunden hat und den Code mit einem makefile compiliert und gelinkt hat. Dazu ruft er cintools auf. Hat jemand damit Erfahrung? Das wäre nämlich eine schöne Lösung für mein Problem.

Vielen Dank für eure Hilfe

Andreas
' schrieb:Meine Frage ist nun, was kann ich damit überhaupt machen?
Einbinden und benutzen? Dry

Zitat:Könnten diese DLL's mir etwas für meine Problembehebung bringen?
Das kann ich dir nicht sagen, da wahrscheinlich nur wenige wissen, was diese DLLs können. Aber hierfür:

Zitat:Was sind DLL'S und bewirken diese?
kannst du mal hier kucken, vielleicht ist das Tutorial ja ausreichend.
' schrieb:Könnten diese DLL's mir etwas für meine Problembehebung bringen?

Wenn Du eine API Dokumentation dazu hast und diese C Funktionen exportieren und nicht C++ Objekte oder Methoden dann wahrscheinlich schon, vorausgesetzt Du lernst erst mal etwas über C und DLLs.

Zitat:Was sind DLL'S und bewirken diese?

Siehe Reaktion von IchSelbst

Zitat:Darüber hinaus habe ich versucht einen einfachen C Code über CIN einzubinden. Aber auch mit den Tuts klappt das nicht wirklich (verwende Visual Studio 2005)Pccrash. HAbe gesehen, dass mein Vorgänger eine ältere Kamera eingebunden hat und den Code mit einem makefile compiliert und gelinkt hat. Dazu ruft er cintools auf. Hat jemand damit Erfahrung? Das wäre nämlich eine schöne Lösung für mein Problem.

CINs sind eine uralte Lösung als LabVIEW noch nicht mit DLLs zurecht kam, da das Konzept von DLLs auf der usprünglichen LabVIEW Paltform, dem Mac, noch nicht bekannt war, und die 16bit DLLs von Windows 3.1 nicht kompatibel waren mit der 32bit Umgebung in der LabVIEW programmiert wurde.

Falls Du ein bestehendes CIN etwas anpassen willst kannst Du das zwar noch ausprobieren aber die Verwendung der command line tools, zusammen mit Visual C 6 und der korrekten Konfiguration der Visual C Umgebung ist ziemlich tricky und nicht gedacht für C Anfänger. Visual Studio 2003 und noch schlimmer 2005 können zwar mit viel Geduld dazu gebracht werden auch CINs in der IDE zu generieren aber das ist meiner Meinung nach nicht sinnvoll investierte Zeit.

Wenn Du neu anfangen musst vergiss CINs ganz schnell und mache stattdessen DLLs mit Visual C. Wenn Du dann noch darauf schaust dass Du Standard C Funktionen (statt C++) von dieser DLL exportierst, kannst Du in der DLL selber soviel C++ benützen wie Du willst aber LabVIEW kann durch die Call Library Node Deine DLL aufrufen.

Rolf Kalbermatter
Kann ich nun meine in C++ geschriebene Schnittstelle in eine DLL schreiben lassen? Und diese dann einbinden?
' schrieb:Kann ich nun meine in C++ geschriebene Schnittstelle in eine DLL schreiben lassen? Und diese dann einbinden?

Häää???

Also Du kannst eine DLL erstellen (in Visual Studio) die Deine C++ Software Schnittstelle aufruft und seinerseits Standard C Funktionen exportiert die LabVIEW dann durch die Call Library Node aufrufen kann. Das wird aber nicht ohne etwas C Programmierung (für Deine DLL) gehen. Wenn Dir das noch immer unverständlich ist dann hege ich doch ziemlich fest den Verdacht, dass Du damit besser gar nicht erst beginnen solltest. (Oder Dich zuvor jedenfalls intensiv, Durcharbeitung eines C Lehrbuches vielleicht, mit genereller C Programmierung und DLLs auseinandersetzst bevor Du Dich wieder daran wagst).

Rolf Kalbermatter
' schrieb:Kann ich nun meine in C++ geschriebene Schnittstelle in eine DLL schreiben lassen? Und diese dann einbinden?
Hast du dir das da auch mal angekuckt?

Im übrigen gilt was mein Vorredner gesagt hat.
Hallo,
unter der LAbView Hilfe gibt es eine kleine Anleitung zur Erstellung von Makefiles. Ich möchte eins schreiben das portabel ist und ohne große Anpassung aus einer c++ datei eine LabVIEW Subroutine (lsb) baut.
Hier mein Code:
[code]############################### description ################################

# Portable makefile to compile the source code for the CodeInterfaceNode
# into a LabVIEW subroutine (.lsb) file. Therfore the c++ code must
# be in the same directory as this makefile.
#---------------------------------------------------------------------------



############################## find cintools ###############################

# compares pattern to find cintools on you computer
CINTOOLSDIR := d:progra~1nation~1labvie~1.0cintools
#---------------------------------------------------------------------------



############################ additional includes ###########################

# additional include pathes
CINCLUDE := -Id:progra~1matrox~1milinclude

#separate the list of your library names with spaces
cinLibraries := d:progra~1matrox~1millibmil.lib milmon.lib
#---------------------------------------------------------------------------



######################### adjustments and defaults #########################

# enter the name of your CIN
name := Addition

# type is default by CIN
type := CIN

# enable debugging tool with '1'; to disable leaving blank
debug_trace := 1

# use windows?
define checkwin
[quote='']Hallo,
unter der LAbView Hilfe gibt es eine kleine Anleitung zur Erstellung von Makefiles. Ich möchte eins schreiben das portabel ist und ohne große Anpassung aus einer c++ datei eine LabVIEW Subroutine (lsb) baut.

Bekomme ich diese Ausgabe:
[code]d:progra~1nation~1labvie~1.0cintoolsntlvsb.mak:4: *** missing seperator.
' schrieb:Vergiss CINs! Das ist alte Technik die von NI in absehbarer Zeit nicht mehr unterstützt wird. Mache DLLs!!!!!

Rolf Kalbermatter

Ok, ich glaub ich lass es. In diesem Forum wird sowieso nicht versucht einem mit seinem Problem zu helfen, sondern nur vorgeschlagen wie man es anders machen soll. Das ich evt. meine Gründe habe make zu verwenden scheint hier niemanden zu interessieren.
' schrieb:Ok, ich glaub ich lass es. In diesem Forum wird sowieso nicht versucht einem mit seinem Problem zu helfen, sondern nur vorgeschlagen wie man es anders machen soll. Das ich evt. meine Gründe habe make zu verwenden scheint hier niemanden zu interessieren.

Hallo AndreasE,

hier im Forum wird einem schon geholfen, nur kann man als Frager nicht voraussetzen, das die Tippgeber und Helfer die gleiche Ausstattung an SW&HW haben und auch wissen was man als Frager für konkrete Probleme hat. Oft ist es nämlich leider so das die Fragen nicht ausreichend formuliert werden.

Desweiteren darf man als Frager auch nicht erwarten hier eine fertige Lösung präsentiert zubekommen.

Aber zurück zu Deinem Thema.

Ob Du nun die DLL über die Projekteinstellungen Deiner IDE compilierst oder dafür Makefiles&Texteditor nutzt ist doch egal. Das ist eine Wahl die Dir überlassen ist. Nur ist das LabVIEW-Forum vielleicht etwas der falsche Ort um nach Grundlagen der C/C++-Programmierung und die Bedienung der IDE/Compiler zu fragen.

Und portable Makefiles sind sowieso so eine Sache, was meinst Du warum automake/autoconf/etc. im Linux/Unix-Bereich soverbreitet sind. (ok die auto-Tools sind auch nciht der Weisheit letzer Schluss)

So genug gelabert,

Schönes WE noch,

Rob
Seiten: 1 2
Referenz-URLs