我在C代码中有3个全局变量:一个int和两个指向结构的指针。我必须将它们编组为C#代码中的公共静态成员,但我找不到任何解决方案。我必须提到修改C代码是绝对最后的选择。C中的元帅全局变量#
我有元帅这一全球:
extern const msdk_FileSystemInterface* m_fileInterface;
这是我到目前为止已经试过,但不编译:
[DllImport("foo.so", EntryPoint = "m_fileInterface")]
private static extern IntPtr _m_fileInterface { get; set; }
public static msdk_FileSystemInterface m_fileInterface
{
get
{
return (msdk_FileSystemInterface)Marshal.PtrToStructure(_m_fileInterface, typeof(msdk_FileSystemInterface));
}
}
。
[DllImport("foo.so", EntryPoint = "m_fileInterface")]
private static extern IntPtr _m_fileInterface;
public static msdk_FileSystemInterface m_fileInterface
{
get
{
return (msdk_FileSystemInterface)Marshal.PtrToStructure(_m_fileInterface, typeof(msdk_FileSystemInterface));
}
}
msdk_FileSystemInterface结构在C#代码中可用(已经封送)。
有没有人有一个解决方案编组全球或不可能的,我真的不得不把他们包装在一个结构或添加setters和getters到C代码?
这是不可能的。不幸的是,你必须做你不想做的事情。 –
@Mthethew这不是不可能的。 GetProcAddress解决了它。 –
@DavidHeffernan很酷!我不知道!虽然ofc是不可能的。 –