Hab ein C++ header file, dass ich nach C# exportieren muß.
// C++
typedef struct {
LVBoolean error;
long code;
LStrHandle source;
} TD1;
typedef struct {
LStrHandle sourceValue;
LStrHandle measureValue;
LStrHandle delayValueSec;
LStrHandle timeValueSec;
} TD3;
typedef struct {
long dimSize;
TD3 elt[1];
} TD2;
typedef TD2 **TD2Hdl;
void __stdcall ReadMeasurement(char GPIBAddress[], TD1 *errorIn,
double *suppressionValue, char selectedFunction[], TD2Hdl *display,
TD1 *errorOut, long len);
Habs versucht jedoch noch ohne Erfolg
// C#
[StructLayout(LayoutKind.Sequential)]
public struct TD1
{
public ushort error;
public long code;
public string source;
};
[StructLayout(LayoutKind.Sequential)]
public struct TD3
{
public string sourceValue;
public string measureValue;
public string delayValueSec;
public string timeValueSec;
};
[StructLayout(LayoutKind.Sequential)]
public struct TD2
{
public long dimSize;
public TD3 elt;
};
[DllImport("Read_Measurement.dll", EntryPoint = "ReadMeasurement",
ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int ReadMeasurement(string GPIBAddress, ref TD1 errorIn,
ref double suppressionValue, string selectedFunction,
ref TD2 display, ref TD1 errorOut, long len);
private void button1_Click(object sender, EventArgs e)
{
errorIn = new TD1();
errorOut = new TD1();
display = new TD2();
error =ReadMeasurement(16, ref errorIn, ref suppresionValue, "", ref display, ref errorOut, 1);
}
Das Objekt display (TD3 sctruct) zeigt immer null Werte.
Wahrscheinlich liegt es an dem struct, dass ich nicht korrekt in C# umwandeln kann.
typedef struct {
long dimSize;
TD3 elt[1];
} TD2;
typedef TD2 **TD2Hdl;
Weiß jemand Rat?
Vielen Dank im Vorraus.