05.07.2007, 07:29
(Dieser Beitrag wurde zuletzt bearbeitet: 14.08.2007 08:16 von AndreasE.)
Beitrag #1
|
AndreasE
LVF-Neueinsteiger
Beiträge: 5
Registriert seit: Jul 2007
8.2
2007
kA
66333
Deutschland
|
DLL's und einbinden von C++Code
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) . 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
|
|
|
05.07.2007, 08:19
Beitrag #2
|
IchSelbst
LVF-Guru
Beiträge: 3.689
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
DLL's und einbinden von C++Code
' schrieb:Meine Frage ist nun, was kann ich damit überhaupt machen?
Einbinden und benutzen?
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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
05.07.2007, 08:37
Beitrag #3
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
DLL's und einbinden von C++Code
' 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). 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
|
|
|
05.07.2007, 10:08
Beitrag #4
|
AndreasE
LVF-Neueinsteiger
Beiträge: 5
Registriert seit: Jul 2007
8.2
2007
kA
66333
Deutschland
|
DLL's und einbinden von C++Code
Kann ich nun meine in C++ geschriebene Schnittstelle in eine DLL schreiben lassen? Und diese dann einbinden?
|
|
|
05.07.2007, 10:43
(Dieser Beitrag wurde zuletzt bearbeitet: 05.07.2007 10:45 von rolfk.)
Beitrag #5
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
DLL's und einbinden von C++Code
' 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
|
|
|
05.07.2007, 12:01
Beitrag #6
|
IchSelbst
LVF-Guru
Beiträge: 3.689
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
DLL's und einbinden von C++Code
' 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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
19.07.2007, 12:10
Beitrag #7
|
AndreasE
LVF-Neueinsteiger
Beiträge: 5
Registriert seit: Jul 2007
8.2
2007
kA
66333
Deutschland
|
DLL's und einbinden von C++Code
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
|
|
|
21.07.2007, 08:02
Beitrag #8
|
|
|
21.07.2007, 14:35
Beitrag #9
|
AndreasE
LVF-Neueinsteiger
Beiträge: 5
Registriert seit: Jul 2007
8.2
2007
kA
66333
Deutschland
|
DLL's und einbinden von C++Code
' 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.
|
|
|
21.07.2007, 15:17
|
dc6xs
registered alien
Beiträge: 762
Registriert seit: Aug 2006
6.1,7.00
2006
kA
79106
Sonstige
|
DLL's und einbinden von C++Code
' 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
Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.
N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
|
|
|
| |