我在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是不可能的。 –