Unity C# 调用C++ dll 问题集锦

本文详细介绍了在Unity中使用C#调用C++ DLL时的关键步骤,包括调用约定、开启x64支持、基本数据类型的传递、数组的处理以及如何在Unity中启用unsafe代码来使用指针。通过示例和注意事项,帮助开发者成功实现跨语言的数据交互。
摘要由CSDN通过智能技术生成

1.调用约定

stdcall 、 cdecl、 fastcall等等

这个用来指定参数传递顺序和函数返回时栈的清除方式。

可以通过以下

[AttributeUsage(AttributeTargets.Method)]
  public class DllImportAttribute: System.Attribute
  {
   public DllImportAttribute(string dllName) {…} //定位参数为dllName
   public CallingConvention CallingConvention; //入口点调用约定
   public CharSet CharSet; //入口点采用的字符接
   public string EntryPoint; //入口点名称
   public bool ExactSpelling; //是否必须与指示的入口点拼写完全一致,默认false
   public bool PreserveSig; //方法的签名是被保留还是被转换
   public bool SetLastError; //FindLastError方法的返回值保存在这里
   public string Value { get {…} }
  }
属性指定调用约定和字符集等等。

2.开启x64支持

这个很容易更改,vs正常是win32 release、debug,可以新建x64 release、debug即可。

3.基本数据类型的传递

互调过程中,最基本要传递的无非是数值和字符,即:int,long,float,char等等,但是此类型非彼类型,C/C++C#中有一些数据类型长度是不一样的,下表中列出常见数据类型的异同:

C/C++ 

C# 

长度

short 

short 

2Bytes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值