Forum: PC-Programmierung Labview DLL einbinden


von Bob H. (Firma: hinter den 7 bergen) (bob128)


Angehängte Dateien:

Lesenswert?

Hi ,

ich habe folgendes Problem ich will in Labview Version 8.5 Studenten 
eine DLL einbinden zur Reihenberechnung. (c++ 2005 visual express 
edition). Ich habe also ein neues Prohekt geöffnet und beim Assistenten 
die Erstellung einer DLL ausgewählt und dann meine Formel zur Berechnung 
eingetragen (siehe screenshot) aber ich verstehe die Fehlermeldung net 
die da kommt und ausserdem nach dem Kompillieren steht im debug ordner 
keine .dll datei sondern eine .dll.embed.manifest aber die erkennt 
labview nicht an bzw ich kann beim konfigurieren und verzeichniss-angabe 
diese datei nicht auswählen er will eine reine .dll datei ich hoffe 
jemand von euch kennt sich da aus und weiß rat vielen dank im voraus

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Du hast windows.h doppelt includiert. Das erste Mal wird es in stdafx.h 
inlcludiert und das zweite mal in deiner Source. Das wirft die Warnungen 
und vielleicht auch den Fehler.

von bob128 (Gast)


Angehängte Dateien:

Lesenswert?

ok jetzt kommt nur noch diese fehlermeldung ^^

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Gibt es 148 Treffer in Google.


Wahrscheinlichste Ursache:

Es wurde versucht, eine einzelne Datei im Projekt zu kompilieren, ohne 
zuvor stdafx.cpp zu kompilieren. Bevor Sie eine einzelne Datei im 
Projekt kompilieren können, müssen Sie stdafx.cpp kompilieren.
http://msdn.microsoft.com/de-de/library/et4zwx34%28VS.80%29.aspx

von bob128 (Gast)


Lesenswert?

und was kann ich dagegen tun? ich mein wie krieg ich ihn dazu das er 
zuerst stdafx.cpp zu kompilieren.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Sorry kenne nur engl. VC++ Versionen: stdafx.cpp öffnen und unter Menü 
Build (Erstellen) Compile (Kompilieren?) auswählen und nicht Build 
(Erstellen?).

von Tom (Gast)


Lesenswert?

> Du hast windows.h doppelt includiert. Das erste Mal wird es in stdafx.h
> inlcludiert und das zweite mal in deiner Source. Das wirft die Warnungen
> und vielleicht auch den Fehler.

No way. Dazu sind Headerguards ja da.

von LabVIEW Fox (Gast)


Lesenswert?

Die Frage, die ich hier aufbringen möchte, weshalb es kompliziert tun, 
wenn es auch einfach geht. Verzichte auf die Einbindung einr DLL und 
implementiere die Reihenetwicklung in LabVIEW. Dann ist alles Native und 
besser dokumentierbar, wartbar  und sogar Platformunabhängig.

von Bob H. (Firma: hinter den 7 bergen) (bob128)


Lesenswert?

Die Frage kann ich dir beantworten es geht einfach darum zu üben DLL's 
in Labview einzubinden natürlich ist das einfacher es gleich in Labview 
zu tun. Aber lass dir gesagt sein das es durch das einbinden der DLL 
sehr viel schneller geht das kann man beobachten wenn man die zeit misst 
die der rechner braucht um den prozess zu verarbeiten aber nun wieder zu 
dem Problem.

Also ich hab jetzt folgendes gemacht: erstmal das microsoft visual 2005 
deinstalliert und das neue 2008 c++ express edition installiert und nun 
kam nur noch ein fehler (siehe screen) es taucht auch jetzt im debug 
ordner jetzt auch eine .dll datei auf labview jammert immer noch das er 
die funktion in der bibliothek nicht finden konnte zitat:

"Der Funktionsname konnte in der Bibliothek nicht gefunden werden. Mit 
einem Rechtsklick auf den Knoten "Aufruf externer Bibliotheken" und 
Auswahl von "Konfigurieren" können Sie den richtigen Funktionsnamen 
angeben"

im buch hieß es ebenfalls das ich eine .def datei erstellen müsste? ka 
was das ist jedenfalls hab ich eine erstellt und sie in die quelldateien 
mit eingebunden weiß nicht ob das so stimmt (siehe screen)

von Bob H. (Firma: hinter den 7 bergen) (bob128)


Angehängte Dateien:

Lesenswert?

erster screen

von Bob H. (Firma: hinter den 7 bergen) (bob128)


Angehängte Dateien:

Lesenswert?

zweiter screen

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Deine "screens" sind für mich sehr schlecht zu lesen.

Du hast .cpp Quellcode, d.h. du übersetzt C++ nicht C.

Möglicherweise wird die Funktion wegen dem Name Mangling von C++ nicht 
gefunden.
http://cplus.about.com/od/introductiontoprogramming/a/conventions_2.htm

Das Einbinden von DLLs aus .c Dateien in Labview ist schön hier 
beschrieben:
http://zone.ni.com/devzone/cda/tut/p/id/9167

Der Punkt "Troubleshooting the Call Library Function and Your DLL" wird 
dich interessieren

von Bob H. (Firma: hinter den 7 bergen) (bob128)


Lesenswert?

Tausend Dank für den Link ich habs jetzt hinbekommen indem ich diese 
zusätzliche dll.h und extern c mit meinem prototypen programmiert habe 
labview meckert auch nicht mehr alles läuft super danke nochmal

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.