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 

Erzeugte DLL hat geänderten Datentyp (uint32->int32)



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!

14.09.2011, 09:52
Beitrag #1

LabVIEWDompteur Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: May 2009

2010 SP1
-
DE

81377
Deutschland
Erzeugte DLL hat geänderten Datentyp (uint32->int32)
Hallo LVF-User!

bin gerade dabei mich bzgl. DLLs in LabVIEW weiterzubilden. Stoße hier aber auf ein Problem, und zwar werden die Dateitypen uint32_t und uint16_t, welche in der Prototypdefinition noch richtig stehen, sobald ich die kompilierte DLL wieder in LabVIEW importiere, geändert zu int32_t und int16_t (uint8_t bleibt).

Ist jemand schonmal auf dieses Problem gestoßen und weiß wie man es behebt?

Viele Grüße,
LabVIEWDompteur
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.09.2011, 11:59
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Erzeugte DLL hat geänderten Datentyp (uint32->int32)
Bin etwas verwirrt. Woher kommt die DLL? Irgendeine C-DLL, die du neu kompilierst?

Wenn die Header-Datei passt, dann sollte es auch beim Import über den DLL-Import-Assi klappen. Ansonsten muss man halt von Hand nacharbeiten.

Gruß, 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.09.2011, 12:30
Beitrag #3

LabVIEWDompteur Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: May 2009

2010 SP1
-
DE

81377
Deutschland
RE: Erzeugte DLL hat geänderten Datentyp (uint32->int32)
Ich habe mir lediglich zum Test ein subVI geschrieben, dass zwei Zahlen die als uint32 deklariert sind addiert bzw. auf Knopfdruck subtrahiert.

Dieses subVI habe ich dann via Applicationbuilder zu einer DLL kompiliert. Danach wieder in LabVIEW via Call Function Library Node eingebunden und hier hatt die DLL eben eine andere Methodendefinition.

Im Applicationbuilder, Define Prototype steht:
uint32_t ZuDLLwerdendesVI(LVBoolean *Boolean3, uint32_t Numeric, uint32_t Numeric2)

in der erzeugten Headerdatei steht (korrekt):
uint32_t __cdecl ZuDLLwerdendesVI(LVBoolean *Boolean3, uint32_t Numeric, uint32_t Numeric2);

aber bei der Auswahl der Methode der DLL über den "Call Function Library Node":
int32_t ZuDLLwerdendesVI(uint8_t *boolean3, int32_t numeric, int32_t numeric2);

Habe ein bischen gesucht und der BUGFIX 201077 aus der Liste zu LabVIEW2010 könnte zu dem Problem passen:
201077 Application builder silently coerces exported DLL prototypes to default
Allerdings benutzte ich ja 2010 SP1, insofern hätte ich gedacht, das ist gelöst, oder ist das was anderes?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.09.2011, 14:42
Beitrag #4

LabVIEWDompteur Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: May 2009

2010 SP1
-
DE

81377
Deutschland
RE: Erzeugte DLL hat geänderten Datentyp (uint32->int32)
Nachtrag:
Bug ist bestätigt, bzw. immernoch vorhanden in LV2010 (nur SP1?) & 2011. National Instruments ist dran.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.10.2011, 12:09 (Dieser Beitrag wurde zuletzt bearbeitet: 14.10.2011 12:12 von rolfk.)
Beitrag #5

rolfk Offline
LVF-Guru
*****


Beiträge: 2.306
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Erzeugte DLL hat geänderten Datentyp (uint32->int32)
(14.09.2011 14:42 )LabVIEWDompteur schrieb:  Nachtrag:
Bug ist bestätigt, bzw. immernoch vorhanden in LV2010 (nur SP1?) & 2011. National Instruments ist dran.

Das ist sowieso ein recht obscures Feature. Der LabVIEW Application Builder fügt in die exportierte DLL eine Resource die die Funktionsprototypen beschreibt. Ich habe noch nie eine Standard DLL gesehen die mit etwas anderem dann LabVIEW gemacht wurde, die eine solche Typelibrary Resource enthält. Warum das existiert ist mir nicht ganz deutlich. Offensichtlich ist es ein MS Feature, das diese aber selber in ihren Compilern nicht aktiv zu unterstützen scheinen.

Wenn Du die DLL mittels Import Library Wizard auf Basis des Header Files importierst sollte es besser gehen. Bleibt natürlich die Frage, warum man in LabVIEW eine DLL macht um diese dann in LabVIEW zu importieren! Andere Entwiklungsumgebungen haben von der integrierten Typelibrary scheinbar nichts, ausser vielleicht Delphi. Könnte mir vorstellen, dass die den Import einer DLL auf Basis dieser Resource vereinfacht haben.

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  UUID als Datentyp für eine DLL erstellen jabami 22 22.505 07.03.2012 23:47
Letzter Beitrag: rolfk
  Variant Datentyp bei C++ dll BastiFantasti 1 5.641 10.02.2012 21:30
Letzter Beitrag: rolfk
  INT32 wird nicht erkannt Curtis Newton 1 4.959 25.11.2011 10:43
Letzter Beitrag: rolfk
  Datentyp HANDLE, PVOID weschi 7 11.195 12.06.2007 14:14
Letzter Beitrag: rolfk

Gehe zu: