(17.04.2014 21:51 )Wedgewood schrieb: Guten Abend,
leider klappt es immer noch nicht...
Ich habe alle Kombinationen bezüglich Aufrufkonvention und aufrufendem Thread probiert. Folgende Ergebnisse:
Einstellungen: beliebigen Thread, stdcall
Access violation (0xC0000005) bei EIP=0x042FF8EA
Mögliche Ursache: E:\Thesis\Labview\Libraries\VIs\Wv List Beds.vi
Einstellungen: beliebigen Thread, C
Komplettabsturz
Einstellungen: UI Thread C
DAbort 0x0037C03D in MemoryManager.cpp
Einstellungen: UI Thread, stdcall
Ausnahme: Access violation (0xC0000005) bei EIP=0x0450F8EA
Mögliche Ursache: E:\Thesis\Labview\Libraries\VIs\Wv List Beds.vi
Was mag nur das Problem sein? Wer kann mir denn helfen?
Hilft es, wenn ich die .h Datei hoch lade?
Gruß
Wedgewood
Natürlich funktioniert das nicht!!!!!
Mit einem eingebetteten Cluster meinte ich einen Cluster innerhalb des Hauptclusters der n U8 oder U16 Integer Elemente enthält. U8 wenn es ASCII ist U16 wenn die DLL mit Unicode compiliert wurde.
Dabei ist n die Zahl die zwischen den eckigen Klammern ist und in Deinen Headern definiert sein muss.
Deine Deklaration
Code:
#ifdef _UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif
ist völlig unsinnig. Das machen die Windows Headers für Dich schon.
Aber wenn Du die DLL in LabVIEW einbindest musst Du halt wissen ob sie mit UNICODE oder nicht kompiliert wurde, ansonsten geht es ziemlich verkehrt. Grundsätzlich ist es nicht sinnvoll um eine DLL mit Unicode Strings in den Aufrufparameterns zu haben da LabVIEW Strings MBCS sind und nicht Unicode, und das ist ausser für Sonderzeichen halt das gleiche wie ASCII.
Wenn Du dann so einen Cluster hast machst Du davon ein Array und konfigurierst den entsprechendne Parameter als Adapt to Type, pass Array Data Pointer.
(18.04.2014 08:02 )BNT schrieb: Moin
Hast Du Dir schon folgenden Thread durchgelesen?
"Dereferencing Pointers ..."
https://decibel.ni.com/content/docs/DOC-9091
Gruß Holger
Holger, es geht hier nicht um Pointer in einem Cluster. Alle fixed size Elemente in einem Cluster werden durch den C Compiler inline in der Struktur angelegt.
D.h:
Code:
struct {
int32 element1[20];
int32 element2[10];
} MyStruct;
enhält keinerlei Pointers. Es ist ganz einfach ein Speicherblock mit 30 int32 Elementen, also 120 Byte Länge.