在转换下面的代码C#时,我遇到了非常棘手的挑战,任何人都可以帮助我解决这个问题。将C++代码转换为C#
typedef struct ACSNameAddr_t {
char FAR *serverName; // How do i use FAR in C#
struct {
short length;
unsigned char FAR *value;
} serverAddr;
} ACSNameAddr_t;
以及如何使用这个工会在C#
typedef struct
{
union
{
CSTARouteRegisterAbortEvent_t registerAbort;
CSTARouteUsedEvent_t routeUsed;
CSTARouteUsedExtEvent_t routeUsedExt;
CSTARouteEndEvent_t routeEnd;
CSTAPrivateEvent_t privateEvent;
CSTASysStatEvent_t sysStat;
CSTASysStatEndedEvent_t sysStatEnded;
}u;
} CSTAEventReport;
编辑答案:
所以包括所有的答案,这里由我写信转换后的代码。通过使用StructLayout如有什么不妥编辑它,它可能是有用的人..
[StructLayout(LayoutKind.Sequential, Pack = 4)]
public struct ACSNameAddr_t
{
string serverName;
[StructLayout(LayoutKind.Sequential, Pack = 4)]
public struct serverAddr
{
public short length;
string value;
};
};
和第二个,
[StructLayout(LayoutKind.Explicit, Pack = 4)]
public struct CSTAEventReport{
[StructLayout(LayoutKind.Explicit, Pack = 4)]
public struct u{
[FieldOffset(0)]
public CSTARouteRegisterAbortEvent_t registerAbort;
[FieldOffset(0)]
public CSTARouteUsedEvent_t routeUsed;
[FieldOffset(0)]
public CSTARouteUsedExtEvent_t routeUsedExt;
[FieldOffset(0)]
public CSTARouteEndEvent_t routeEnd;
[FieldOffset(0)]
public CSTAPrivateEvent_t privateEvent;
[FieldOffset(0)]
public CSTASysStatEvent_t sysStat;
[FieldOffset(0)]
public CSTASysStatEndedEvent_t sysStatEnded;
};
};
http://code2code.net/ – 2011-06-01 16:45:21
@Soner格尼尔:史诗这两个代码片段均失败。 – 2011-06-01 16:48:05
@Soner - 试过已经,没有工作..如果有人能够将此转换,那么我将能够转换其他方法。 :) – 2011-06-01 16:48:16