UNITY3D C#调用C封装的函数库方法
如果在C函数库test.dll中存在函数int test1(int a, int b), 那么C#对动态库函数的引用可以这样声明,之后可以调用test1函数.
[DllImport("test", EntryPoint = "test1", CallingConvention = CallingConvention.Cdecl)]
public static extern int test1(int a, int b);
那么如果函数是指针参数怎么办?
若dll中存在函数int test2(int *a, int *b), 那么C#对动态库函数的引用可以这样声明,之后可以调用test2函数.
[DllImport("test", EntryPoint = "test1", CallingConvention = CallingConvention.Cdecl)]
public static extern int test1(ref int a,ref int b);
如遇到函数的参数为结构体又该如何呢?
struct mydatapack
{
string name;
string sex;
int age;
}
int test3(struct mydatapack data);
我们可以这样声明:
[StructLayout(LayoutKind.Sequential)]
public struct datapaclk
{
public string name;
public string sex;
public string age;
public datapack(string Name,string Sex, int age)
{
this.name= Name;
this.sex= Sex;
this.age = Age;
}
}
[DllImport("test", EntryPoint = "test3", CallingConvention = CallingConvention.Cdecl)]
public static extern int test3(datapack data);
- 上一篇:协作机械臂遥操作数据手套研制成功 2024/1/27
- 下一篇:unity3d C# 调用C程序封装结构体函数 2023/10/30
