之前用結構體ok的 CPP代碼
struct MyStruct
{
int Width;
int Height;
};
extern "C" _declspec(dllexport)int Add(MyStruct myStruct)
{
return myStruct.Width + myStruct.Height;
}
然后上位機 CSharp代碼
[StructLayout(LayoutKind.Sequential)]
public struct MyStruct
{
public int Width { get; set; }
public int Height { get; set; }
}
[DllImport("OpenCvHelper.dll")]
public static extern int Add([MarshalAs(UnmanagedType.Struct)] MyStruct myStruct);
由于資料結構需要被參考 所以上位機希望用類來封裝資料,這樣的話如何實作呢?下位機是不是也要用類?還是說有什么方式可以轉換一下?
只有這點分數了,希望有經驗的指點一下謝謝。
uj5u.com熱心網友回復:
好像微軟提到過 只能用結構體,無法使用類。進來看過帖子的朋友留個言吧,送分 了!
uj5u.com熱心網友回復:
傳class和struct的區別就是傳‘參考’和‘值’的區別。要在C#方傳class,C++要接收參考。
extern "C" _declspec(dllexport)int Add(const MyStruct& myStruct)
{
return myStruct.Width + myStruct.Height;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/73224.html
標籤:C#
上一篇:FlexCell匯出EXCEL
