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 

Einbinden einer dll (*.so)



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!

05.03.2010, 14:36
Beitrag #1

Apu Offline
LVF-Grünschnabel
*


Beiträge: 41
Registriert seit: Jun 2006

2009
2006
EN

06366
Deutschland
Einbinden einer dll (*.so)
Hallo!

Brauche dringend Hilfe beim Einbinden einer *.so Bibliothek.
Ich möchte eine Funktion aus der Bibliothek aufrufen, die Definition ist folgende:

DWORD Statistics(HANDLE hHandle, TPDIAG *diag)

dabei ist TPDIAG eine Struktur mit folgendem Aufbau:

typedef struct
{
WORD wType;
DWORD dwBase;
WORD wIrqLevel;
DWORD dwReadCounter;
DWORD dwWriteCounter;
DWORD dwIRQcounter;
DWORD dwErrorCounter;
WORD wErrorFlag;
int nLastError;
int nOpenPaths;
char szVersionString[VERSIONSTRING_LEN];
} TPDIAG;

Ich habe mir einen Cluster erstellt mit obigem Inhalt.
Die Frage ist jetzt aber wie der Parameter in der Call Library Function zugewiesen werden muss.
Welchen Typ muss ich dafür vergeben und welches Datenformat?
Außerdem ist mir das mit dem String noch ein bisschen schleierhaft

Bin ein absoluter Anfänger was das Einbinden von externem Code angeht, also bitte ich hier um Hilfe.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.03.2010, 21:33
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Einbinden einer dll (*.so)
Also jetzt bin ich schwer verwirrt. Einerseits sprichst Du von DLL aber dann von .so. Der C Code verwendet deutlich Windows Datentypen.

DLL ist Windows, .so ist die Fileendung für Linux shared libraries, Datentypen von Windows????

Irgendwie sieht das alles komisch aus.

Zu Deinem Problem:

Der Cluster ist Flat. Das heisst er enthält keine Pointer. Das ist schon mal gut. Die einzige Schwierigkeit ist der String am Ende aber der ist fixed size und kann deshalb in LabVIEW durch eine Cluster von VERSIONSTRING_LEN uint8 Elementen nachgebildet werden. Nun konfigurierst Du Den Parameter als Adapt to Typel, et voila.

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
08.03.2010, 16:34 (Dieser Beitrag wurde zuletzt bearbeitet: 08.03.2010 16:39 von Apu.)
Beitrag #3

Apu Offline
LVF-Grünschnabel
*


Beiträge: 41
Registriert seit: Jun 2006

2009
2006
EN

06366
Deutschland
Einbinden einer dll (*.so)
Habe sowohl eine *.dll für die LabVIEW Entwicklung unter Windows als auch eine *.so für die LabVIEW Entwicklung unter Linux.
Momentan arbeite ich in der Linuxversion LabvIEW 2009.
Als Prototyp in dem Call Library Function habe ich jetzt folgendes:

uint16_t Statistics(int8_t hHandle, void *TPDiag);

Im Anhang ist ein Screenshot ds Clusters den ich erstellt habe.
Sobald ich die Funktion aufrufe schließt sich das komplette LabVIEW ohne irgendeinen Fehler.
Ist der Cluster soweit erstmal richtig?

Vielen Dank für die Hilfe


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.03.2010, 19:51
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Einbinden einer dll (*.so)
Nein int ist ausser auf alten Windows 3.1 Systemen eindeutig ein 32 bit Integer. Und wie gross VERSIONSTRING_LEN ist weiss ich nicht aber wenn das mehr als 4 ist dann ist es auch einfach falsch.

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
  Einbinden einer DLL mit mehr Output-Parametern, als Input-Parametern Herm 3 6.251 14.06.2011 11:12
Letzter Beitrag: rolfk
  DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL Dimitri 24 27.166 02.07.2010 15:16
Letzter Beitrag: Dimitri
  Einbinden einer DLL, Speichermanagement Mictlantecutli 3 7.931 14.10.2009 08:33
Letzter Beitrag: Mictlantecutli
  Problem beim Einbinden einer DLL preacha 18 19.224 25.09.2008 11:51
Letzter Beitrag: baliik
  Einbinden einer Delphi-dll Svenni 6 8.377 17.10.2006 12:05
Letzter Beitrag: Svenni

Gehe zu: