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 

Fehler bei DLL-Einbindung in LV



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!

13.08.2008, 10:34 (Dieser Beitrag wurde zuletzt bearbeitet: 13.08.2008 10:37 von Philip.)
Beitrag #1

Philip Offline
LVF-Neueinsteiger


Beiträge: 1
Registriert seit: Aug 2008

7.1
2008
de

6015
Deutschland
Fehler bei DLL-Einbindung in LV
Hallo zusammen

Ich versuche momentan mein C program in eine DLL zu kompilieren und dann in LabVIEW einzubinden.
Auf dem PC, wo ich das C program geschrieben habe funktioniert alles tip top.

Wenn ich aber versuche dieselbe DLL Datei auf einem anderen PC laufen zu lassen wird von LV die folgende Fehlermeldung generiert:

Error loading <DLL-pfad>
This application has failed to start because the application configuration is incorrect.
Reinstalling the application may fix this problem.

Ich habe mir dann mal das Tutorial in diesem Forum angeschaut und ausprobiert, ob das Einbinden der DLL im Tutorial zip-file auf verschiedenen PCs funktioniert.
Es hat auf allen PCs funktioniert.

Somit liegt das Problem wahrscheinlich bei der Compiler Einstellung welcher die DLL generiert, ich weiss einfach nicht genau wo.
Komisch ist es auch, dass die DLL auf PC funktioniert, wo sie generiert wurde, doch auf anderen PCs nicht.
Ich benütze das Microsoft Visual Studio C++ 9 Express und LV 7.1.

Ich habe mal eine Test dll, ein Test Programm für LV 7.1 und den Test source code für c angehängt. (LabVIEWTest.vi, Test.dll)
Das C program wurde mir nicht erlaubt hochzuladen, darum hier der Inhalt:

/* Call Library source file */

#include "extcode.h"

__declspec (dllexport) long addierer(long *a, long *b, long *erg);

long addierer(long *a, long *b, long *erg)
{

*erg = *a + *b;
return 0;

}

Die Libary Datei zu meiner DLL "Test.lib" konnte ich auch nicht hochladen.

Dieses Test Programm funktioniert auch nur auf dem PC, wo die DLL compiliert wurde und generiert die gleiche Fehlermeldung wie oben.

Kann mir da jemand weiter helfen?

vielen dank

philip


Angehängte Datei(en)
Sonstige .vi  LabViewTest.vi (Größe: 11,99 KB / Downloads: 295)

Sonstige .dll  Test.dll (Größe: 28 KB / Downloads: 269)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.08.2008, 10:54
Beitrag #2

RoLe Offline
LVF-Guru
*****


Beiträge: 1.236
Registriert seit: Jul 2007

-
1997
en

0
Schweiz
Fehler bei DLL-Einbindung in LV
Also, bei mir meldet LabVIEW, dass die MSVCR90D.dll nicht gefunden wurde.
Die hast du vermutllich auf deinem "Microsoft Visual Studio C++ 9 Express"-PC aber nicht auf den anderen.

Was das genau ist und was du machen musst, weiss ich nicht.
Ev. ist das eine Microsoft-Run-Time die noch zusätzlich auf den Rechner installiert werden muss.

.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.08.2008, 21:14
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Fehler bei DLL-Einbindung in LV
Schau mal hier.

Vielleicht hilft das...

Die DLL MSVCR90D.dll (also mit D) deutet darauf hin, dass du da was im Debug-Modus gelinkt hast. Zumindest verstehe ich so die Links, die ich bei Google gefunden habe.

MfG, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.08.2008, 09:28
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.306
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Fehler bei DLL-Einbindung in LV
' schrieb:Also, bei mir meldet LabVIEW, dass die MSVCR90D.dll nicht gefunden wurde.
Die hast du vermutllich auf deinem "Microsoft Visual Studio C++ 9 Express"-PC aber nicht auf den anderen.

Was das genau ist und was du machen musst, weiss ich nicht.
Ev. ist das eine Microsoft-Run-Time die noch zusätzlich auf den Rechner installiert werden muss.

Ziemlich gut getippt Role! Das ist auch der Grund warum ich meine LabVIEW DLLs noch mit Visual Studio 6 (ja ich weiss ein wirklich alter Oldtimer) kompiliere. Die laufen dann auf allen PCs da die entsprechenden Rumtime libraries selbst auf einem W2K Computer standard sind (und sogar auf einem W95 Computer normalerwiese mit Garantie drauf waren, durch Installation von IE oder anderen MS Applikationen ohne die man ja eh kaum was machen kann.

Was man dabei machen muss ist (naja) einfach:

Irgendwo in der Visual Studio Installation gibt es ein Dokument das angibt welches die entsprechenden Redistributables sind. Das sind Files die Du mit einer Applikation mitgeben darfst/musst. Meist gibt es ein seperates Installationsprogram um diese Files auf einem Zielrechner zu installieren aber alternativ darf man die auch in einen eigenen Installer einbinden von wo sie normalerweise im Systemdirectory abgelegt werden.

Rolf Kalbermatter

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
26.10.2009, 11:46
Beitrag #5

angori Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Aug 2008

8.00
-
de

48520
Deutschland
Fehler bei DLL-Einbindung in LV
Hallo miteinander

Ich habe das Problem, dass wenn ich den Code von Philip selbst kompiliere (mit Visual C++ 2008 Express Edition), mir LV (Version 8.6) die folgende Fehlermeldung liefert:

"Error 1097 occurred at Call Library Function Node in LabVIEWTest.vi"
"Possible reason(s):

LabVIEW: An exception occurred within the external code called by a Call Library Function Node. The exception may have corrupted LabVIEW's memory. Save any work to a new location and restart LabVIEW."



Wenn ich jedoch Philip's DLL gebrauche funktioniert alles. Hat jemand eine Idee an was das liegen könnte?
Ich sollte unbingt eine DLL schreiben die mehr als nur zwei Zahlen addiert..doch zuerst muss das mal klappen..!


Besten Dank!
angori
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.10.2009, 12:24
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.306
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Fehler bei DLL-Einbindung in LV
Das könnte zu Beispiel daran liegen dass Du in Deinem Compiler eine andere defaqult calling convention verwendest. Visual C verwendet meist cdecl als default aber das könnte in Deiner Version anders sein. Checkst Du halt mal alles in Deinen DLL Project Settings.

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
26.10.2009, 13:56
Beitrag #7

angori Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Aug 2008

8.00
-
de

48520
Deutschland
Fehler bei DLL-Einbindung in LV
Besten Dank für deinen Tipp. Ich habe jedoch nichts bezüglich Calling Convention gefunden...
Aber es ist so, dass wenn ich die Funktion innerhalb der DLL leer lasse (so dass sie nichts zu tun hat), dann gibt LV keinen Fehler aus. Irgendwie macht also die Addition selbst Probleme. ..aber wieso wohl?

Gruss
angori
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.10.2009, 15:05
Beitrag #8

angori Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Aug 2008

8.00
-
de

48520
Deutschland
Fehler bei DLL-Einbindung in LV
es geht jetzt.. ich hatte jeweils die Werte und nicht deren Pointer übergeben - innerhalb von LV.

Danke für die Hilfe!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.10.2009, 15:06 (Dieser Beitrag wurde zuletzt bearbeitet: 26.10.2009 15:08 von rolfk.)
Beitrag #9

rolfk Offline
LVF-Guru
*****


Beiträge: 2.306
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Fehler bei DLL-Einbindung in LV
Klingt zwar dumm, aber ist ein Tippfehler eventuel der Bösewicht? Ansonsten Source Code, Project Files und alles mal uploaden. Wir können ansonsten hier noch tagelang Robert Lembkes lustiges Rätselraten machen auf diese Weise.

Das ist ungefähr dasselbe wie wenn ich zur Garage gehe und sage, dass mein Auto ein komisches Geräusch macht und auf die Frage wo es denn steht antworte, dass das noch zuhause ist.

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Einbindung DLL funktioniert nicht Schrankwand 1 4.137 10.03.2023 18:50
Letzter Beitrag: GerdW
  Einbindung DLL mit geschachtelten Structures lab-falballa 2 9.064 10.05.2017 08:28
Letzter Beitrag: lab-falballa
  ext. DLL - Einbindung Read Funktion TobSTAR 7 13.074 12.02.2017 18:40
Letzter Beitrag: rolfk
  DLL-Einbindung schlägt fehl lupus022 7 10.298 23.05.2013 11:16
Letzter Beitrag: lupus022
  Problem bei Struct Einbindung wie in C/C++ raverel 5 8.819 24.04.2013 14:22
Letzter Beitrag: raverel
  DLL-Einbindung, Struct mit verschiedenen Datentypen als Pointer übergeben hawk72 4 11.107 11.05.2012 14:41
Letzter Beitrag: hawk72

Gehe zu: