一、支援
通過mono, c++呼叫c#的可以傳入的引數型別支援型別有:
1、基本資料型別(bool float double enum...)
2、引用型別
3、結構體型別
4、類物件
5、陣列
6、指標陣列
7、字串
二、示例
下面**演示,各種型別呼叫的方法:
mian.cpp和test_case.h在c++工程中
testsharp.cs在c#dll中
main.cpp
#include #include #include #include #include #include "testcase.h"
monodomain* domain;
int main()
test_case.h
#pragma once
#include #include #include #include #include #include #include struct struct_test
;class class_test
;struct struct_test1
;void testcase1(monoobject *mono_object)
}// 基礎引數型別呼叫
void testcase2(monoobject* mono_object)
}void testcase3(monoobject* mono_object)
}// 陣列
void testcase4(monoobject* mono_object, monoimage *image)
monomethod* mono_method = mono_class_get_method_from_name(mono_class, "testarrayparameter", 1);
void* p[1];
p[0] = mono_array;
if (mono_method != nullptr)
}// 物件引數
void testcase5(monoobject* mono_object, monoimage* image)
}void testcase6(monoobject* mono_object)
}
testsharp.cs
using system;
using system.collections.generic;
using system.text;
namespace monodll
public struct struct_test1
public class class_test
public class testcsharp
// 基礎引數型別呼叫
public void testbasetypeparameter( bool e, float f, double d, int i)
", e, f, d, i);
}// 基礎引數引用呼叫
public void testbasetyperefparameter(ref bool e, ref float f, ref double d, ref int i)
", e, f, d, i);
}// 陣列
public void testarrayparameter(struct_test ss)
", i);
console.writeline("arrayparameter ", s.f, s.d, s.s);}}
// 物件引數
public void testclassparameter(class_test c)
", c.f, c.d, c.s);
}// 傳入位址的陣列
unsafe public void testpointparameter(intptr ptr, int count)
", p1[i].d, p1[i].f);}}
}}
嵌入式C學習
靜態變數與靜態函式 extern變數 關鍵字const和巨集定義define 程式中所有數在計算機記憶體中都是以二進位制的形式儲存的。位運算就是直接對整數在記憶體中的二進位制位進行操作。常見的位運算有 and運算 or運算 xor運算 not運算 shl運算 和shr運算 and運算通常用於二進位制...
嵌入式C學習
位域函式指標 定義方式 結構體做函式引數傳遞有三種方式 1 用結構體的單個成員作為函式引數,向函式傳遞結構體的單個成員 屬於傳值呼叫,不會影響相應的實參結構體的值 分為值傳遞和位址傳遞。2 用結構體變數做函式引數,向函式傳遞結構體完整結構 屬於傳值呼叫,不會影響相應的實參結構體的值 屬於位址傳遞。3...
嵌入式C開發
將n左移m位 int byte to left move int n int m if n 1 if n 1 return ret 將n右移m位 int byte to right move int n int m if n 1 if n 1 ret n return ret 閒著無聊,自己寫了兩個...