大家好,現想請教一下大家一個C#方面的問題,謝謝大家的解答
情況是這樣的,我呼叫了一個C++的動態庫,原型是這樣的:
struct ImageBinHeader
{
DWORD magic;
DWORD version;
WORD hchsum;
WORD dchsum;
DWORD dsize;
DWORD load_addr;
DWORD entry_point;
DWORD img_len;
DWORD img_attr;
DWORD next_section_addr;
BYTE name[4];
BYTE priv[24];
};
LINKAGE ImageBinHeader** PMC_FwParserGetFileInfoByHandle(int handle);
那我在C#中要如何撰寫,是不是要寫成這樣?
public struct ImageBinHeader
{
public uint magic;
public uint version;
public ushort hchsum;
public ushort dchsum;
public uint dsize;
public uint load_addr;
public uint entry_point;
public uint img_len;
public uint img_attr;
public uint next_section_addr;
public byte[] name;
public byte[] priv;
};
[DllImport(@"phoenixMC.dll", EntryPoint = "PMC_FwParserGetFileInfoByHandle", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr PMC_FwParserGetFileInfoByHandle(int handler);
還有,呼叫的代碼該怎么寫?這兩天我上網搜到了一些資料,但都沒有說到C++的二級指標在C#中要怎么寫,具體用的時候要怎么呼叫,哪位高人可以給出一段代碼嗎?非常感謝!
我這樣呼叫OK不!!!
ImageBinHeader imageInfo = new ImageBinHeader();
ImageBinHeader imageInfo = new ImageBinHeader();
public void parse_FWInfo(int FWHandler){
IntPtr ptr = PMC_FwParserGetFileInfoByHandle(FWHandler);
imageInfo = (ImageBinHeader)Marshal.PtrToStructure(tmp1, typeof(ImageBinHeader));
}
uj5u.com熱心網友回復:
https://blog.csdn.net/u011430225/article/details/78675163用這個
uj5u.com熱心網友回復:
https://github.com/jaredpar/pinvoke-interop-assistant這貌似還有個新版的
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/41562.html
標籤:C#
