| 

.NET C# Java Javascript Exception

2
Hallo zusammen,

ich habe die Aufgabe eine c++ Struct in c# zu mappen.
Ich habe schon alles versucht, ich kriege es einfach nicht hin.
Recherchen haben auch nichts gebracht.

Hier die Deklaration in der h-Datei:

#define ASAP3_INVALID_HDL (TAsap3Hdl)0
struct tAsap3Hdl;
typedef struct tAsap3Hdl *TAsap3Hdl;

Kann mir jemand sagen wie ich das in c# mappen kann???

mfg
30.11.2011
mab 1 2
Die Informationen sind ein wenig vage. Wie sieht denn die Struktur genau aus (Datenfelder)? Wo bekommst du deren Daten her und wie bindest du den Code ein? Oder ist letzteres die eigentliche Frage, im Sinne von: "Wie greife ich aus C# auf C++ Code zu"?
Hendrik Lösch 30.11.2011
...oder willst du C++ code in C# code umwandeln? Was genau meinst du mit "mappen"?
Eiger 30.11.2011
1 Antwort
0
Genau das meinte ich.
Ich habe das Problem aber schon gelöst.

Ich konnte alles in c# nachbilden.
Ich wusste nur mit dieser c++ Deklaration nichts anzufangen.

c++ => struct tAsap3Hdl;
c# => using TAsap3Hdl = System.UInt32;

Sieht jetzt im ganzen wie folgt aus...

using System.Runtime.InteropServices;
using TAsap3Hdl = System.UInt32;

...

public static class Klasse
{
[DllImport ("Externe.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "Asap3GetVersion")]
public static extern bool GetVersion (out TVersion version);

[DllImport ("Externe.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "Asap3Init")]
public static extern bool Initialisieren (
ref TAsap3Hdl hdl,
uint responseTimeout,
string projectFile,
uint fifoSize,
bool debugMode);
}

public struct TApplicationID
{
public TApplicationType tApplicationType;
public string tApplicationPath;
}

[StructLayout (LayoutKind.Sequential, Pack = 0)]
public struct TVersion
{
public short dllMainVersion;
public short dllSubVersion;
public short dllRelease;
[MarshalAs (UnmanagedType.ByValTStr, SizeConst = 50)]
public string osVersion;
public short osRelease;
}

public enum TApplicationType
{
eUNDEFINED = 0,
eCANAPE = 1,
eCANDITO = 2,
eAPPLOCATION = 3
}
30.11.2011
mab 1 2

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH