LabVIEWForum.de
Error 1097 - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: Error 1097 (/Thread-Error-1097)



Error 1097 - katanad - 15.06.2016 09:15

Hi zusammen,

ich bin neu mit Labview, insbesondere mit DLL einbinden. Ich möchte jetzt ein LED-Device mit Labview kontrollieren. Ein Kollege von mir hat ein Wrapper mit Visual Studio 2012 geschrieben.

Ich habe ein Problem mit eine Funktion darin.

Die c code sind so
API *char getdevice(int devNo)
{
char *selectdevice;
selectdevice = getselectdevice(devNo);
return selectdevice;
}
Funktion getselectdevice(devNo) ist c++ Funktion, um die device zu kommunizieren. Parameter devNo ist für wie viele Devices verbunden sind.(Bei mir nur ein)

Ich benutze Lv2011 und habe die DLL so konfiguriert.
Thread: run in any Thread
Calling convention: C

Parameter
return type: String C String Pointer
devNo: Numeric signed 32-bit Integer

So funktioniert nicht.
Dann habe ich das Verfahren von der untern Link versucht(mit getValuebyPointer und return type zu signed pointer-sized integer geändert) leider kriege ich immer die Errorcode 1097
https://decibel.ni.com/content/docs/DOC-9091


Danke im Voraus


RE: Error 1097 - rolfk - 15.06.2016 09:47

(15.06.2016 09:15 )katanad schrieb:  Hi zusammen,

ich bin neu mit Labview, insbesondere mit DLL einbinden. Ich möchte jetzt ein LED-Device mit Labview kontrollieren. Ein Kollege von mir hat ein Wrapper mit Visual Studio 2012 geschrieben.

Ich habe ein Problem mit eine Funktion darin.

Die c code sind so
API *char getdevice(int devNo)
{
char *selectdevice;
selectdevice = getselectdevice(devNo);
return selectdevice;
}
Funktion getselectdevice(devNo) ist c++ Funktion, um die device zu kommunizieren. Parameter devNo ist für wie viele Devices verbunden sind.(Bei mir nur ein)

Ich benutze Lv2011 und habe die DLL so konfiguriert.
Thread: run in any Thread
Calling convention: C

Parameter
return type: String C String Pointer
devNo: Numeric signed 32-bit Integer

So funktioniert nicht.
Dann habe ich das Verfahren von der untern Link versucht(mit getValuebyPointer und return type zu signed pointer-sized integer geändert) leider kriege ich immer die Errorcode 1097
https://decibel.ni.com/content/docs/DOC-9091


Danke im Voraus

Also

Code:
API *char getdevice(int devNo)

sollte wohl

Code:
API char* getdevice(int devNo)

sein, sonst müsste der C Compiler protestieren. Und wenn das so ist, dann sollte Deine ursprüngliche Parameterkonfiguration funktionieren.

Und dann ist natürlich die ganz grosse Preisfrage: wie ist API wohl definiert in den entsprechenden Headern??????? Glas1 Glas1

Könnte das soetwas wie __cdecl oder __stdcall enthalten? Dann müsste man in der Call Library Node natürlich die Calling Convention entsprechend anpassen.


RE: Error 1097 - katanad - 15.06.2016 11:31

(15.06.2016 09:47 )rolfk schrieb:  Also

Code:
API *char getdevice(int devNo)

sollte wohl

Code:
API char* getdevice(int devNo)

sein, sonst müsste der C Compiler protestieren. Und wenn das so ist, dann sollte Deine ursprüngliche Parameterkonfiguration funktionieren.

Und dann ist natürlich die ganz grosse Preisfrage: wie ist API wohl definiert in den entsprechenden Headern??????? Glas1 Glas1

Könnte das soetwas wie __cdecl oder __stdcall enthalten? Dann müsste man in der Call Library Node natürlich die Calling Convention entsprechend anpassen.

*char und char* ist mein Fehler. In Code steht char*

Und in Header Datei steht sowas

#ifdef WRAPPER_EXPORTS
#define API __declspec(dllexport)
#else
#define API __declspec(dllimport)
#endif