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 

Dieses Thema hat akzeptierte Lösungen:

Datenübergabe an DLL Pointer to Pointer



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!

31.01.2018, 22:04
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Datenübergabe an DLL Pointer to Pointer

Akzeptierte Lösung

(19.01.2018 15:38 )Reiling schrieb:  Die Besipielfunktionen besitzen unterschiedliche Datenübergabeformate, multiplizieren die übergebenen doubles mit 2 und geben das Ergebnis zurück. Funktionen 14 und 15 laufen einwandfrei, Funktion 16 ist die zu knackende Nuss.

Die Anregung ist um solche Parameter NICHT in einer DLL zu verwenden! Was Du da im Prinzip konstruiert hast ist ein Array von Pointern die jeweils ein Array von doubles beinhalten. Das ist in LabVIEW direkt nur mit sehr viel Voddoo zu realisiseren und das macht wenig Sinn. Zudem ist es inherent unsicher da Du in der Funktion von einer Anzahl Reihen und Kolonnen ausgehst aber niemand garantiert dass der Aufrufer dieses Array so angelegt hat.

Wenn Du das wirklich so machen willst müsstest Du ein Array von Pointer sized Integern anlegen das 3 Elemente besitzt und jedem dieser Element ein Memorypointer zuweisen der 4 * 8 bytes (sizeof(double)) besitzt. Es gibt sinnvollere Übungen dann in LabVIEW C Compiler spielen zu wollen. Besser wäre ein LabVIEW 2D Array mit Adapt to Type, Pass Handles, direkt an die DLL zu übergeben. Das sähe dann etwa so aus:

Code:
typedef struct
{
    int32_t dim1;
    int32_t dim2;
    double elm[1];
} Arr2DDoubleRec, *Arr2DDoublePtr, **Arr2DDoubleHdl;

int32_t function(Arr2DDoubleHdl arr)
{
    int32_t i, j;
    for (i = 0; i < (*arr)->dim1; i++)
    {
        for (j = 0; j < (*arr)->dim2; i++)
        {
             (*arr)->elm[i * (*arr)->dim2 + j] *= 2;
        }
    }
    return i * j;
}

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 


Nachrichten in diesem Thema
RE: Datenübergabe an DLL Pointer to Pointer - rolfk - 31.01.2018 22:04

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Absturz durch unzulässige Pointer VS_03 3 8.779 28.10.2016 18:32
Letzter Beitrag: VS_03
  dll mit Pointer auf komplexe Struktur einbinden Wedgewood 11 14.655 27.04.2014 23:44
Letzter Beitrag: Wedgewood
  Pointer auf Array mit Labview übertragen und darstellen lupus022 35 25.783 19.07.2013 10:53
Letzter Beitrag: lupus022
  Pointer und MoveBlock OXO 4 7.220 03.06.2013 16:31
Letzter Beitrag: OXO
  Pointer auf Subarray übergeben Event Horizon 5 6.515 15.07.2012 10:21
Letzter Beitrag: rolfk
  DLL-Einbindung, Struct mit verschiedenen Datentypen als Pointer übergeben hawk72 4 10.063 11.05.2012 14:41
Letzter Beitrag: hawk72

Gehe zu: