LabVIEWForum.de - Error 1097

LabVIEWForum.de

Normale Version: Error 1097
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
(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.
(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
Referenz-URLs