位置: 编程技术 - 正文

Unity C# 调用C++ dll 问题集锦(unity打开c#)

编辑:rootadmin
1.调用约定

推荐整理分享Unity C# 调用C++ dll 问题集锦(unity打开c#),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:c# unity 教程,c# unity 教程,unity打开c#,unity c# 调用,c#在unity的作用,c#在unity的作用,unity c# 调用,unity打开c#,内容如对您有帮助,希望把文章链接给更多的朋友!

stdcall 、 cdecl、 fastcall等等

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

可以通过以下

属性指定调用约定和字符集等等。2.开启x支持

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

3.基本数据类型的传递

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

C/C&#;&#;

C#

长度

short

short

2Bytes

int

int

4Bytes

long(该类型在传递的时候常常会弄混)

int

4Bytes

bool

bool

1Byte

char(Ascii码字符)

byte

1Byte

wchar_t(Unicode字符,该类型与C#中的Char兼容)

char

2Bytes

float

float

4Bytes

double

double

8Bytes

最容易弄混的是就是long,char两个类型,在C/C&#;&#;中long和int都是4个字节,都对应着C#中的int类型,而C/C&#;&#;中的char类型占一个字节,用来表示一个ASCII码字符,在C#中能够表示一个字节的是byte类型。与C#中char类型对应的应该是C/C&#;&#;中的wchar_t类型,对应的是一个2字节的Unicode字符。

温馨提示,C&#;&#;的char不是C#的char,这两个类型不兼容的。并且wchar_t 在windows下2byte,在linux下4byte。4.传递数组Unity C# 调用C++ dll 问题集锦(unity打开c#)

----------------------------------------------------------

C#声明形参如下:

char[] chs 或者 [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] char[] chs

C&#;&#;声明形参如下:

wchar_t chs[5]

此时数组时拷贝过去的,C&#;&#;修改数组不会改变C#数组

----------------------------------------------------------

C#声明形参如下:

([In, Out][MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] char[] chs

C&#;&#;声明形参如下:

wchar_t* chs

此时相当于按引用传递,C&#;&#;修改数组会改变C#数组

----------------------------------------------------------

C#声明形参如下:

ref char ch(调用时,ref char[0])

C&#;&#;声明形参如下:

wchar_t* chs

此时相当于按引用传递,C&#;&#;修改数组会改变C#数组

------------------------------------------------------------

如果需要使用指针,可能需要开启unsafe。

5.开启unsafe

Unity3d中C#使用指针(Unsafe)的办法

近日由于在U3D项目中要使用到数据传递(C&#;&#; DLL的数据传递给U3D中的C#),其中涉及到需要使用C#的指针。直接编译会出现以下错误Unsafe code requires the 'unsafe' command line option to be specified。

下面是我总结的解决办法:

1.去除MONO编辑器中的Unsafe错误,Assembly-CSharp鼠标右键 找到Options->Build->General 。Allow 'unsafe' code 打钩。这个只能去除MONO报错,但是依然无法运行。

2.首先看下面一段比较长的

Custom Preprocessor Directives

It is also possible to define your own preprocessor directives to control which code gets included when compiling. To do this you must add in the "Assets/" folder a text file with the extra directives. The name of the file depends on the language you are using :

C#<Project Path>/Assets/smcs.rspC# - Editor Scripts<Project Path>/Assets/gmcs.rspUnityScript<Project Path>/Assets/us.rspBoo<Project Path>/Assets/boo.rsp

As an example, if you include the single line '-define:UNITY_DEBUG' in your smcs.rsp file the define UNITY_DEBUG will exist as a global define for C# scripts, except for Editor scripts.

Every time you make make changes to the .rsp files a recompilation needs to be done for them to be effective. You can do this by updating or reimporting a single script (.js, .cs or .boo) file.

The usage of the .rsp files is described in the help of the smcs application, included in the Editor installation folder. You can get more information by running : "smcs -help".

在你的Assets目录下面添加smcs.rsp文件,里面只加一行字不要有空&#; -unsafe。 OK搞定。记得一定要重启Unity3d, 因为这个预编译是在启动U3D时候运行的。工程文件名别带中文。

原理是编辑器中的smcs.exe 添加编译命令,也可以在CMD下运行编辑器目录下的smcs.exe 逐个添加,会很累的。

引用:

[1] C#与C/C&#;&#;的交互 C#_DllImport用法和路径问题 Unity3d中C#使用指针(Unsafe)的办法 数组MARSHALLING

Dialogue System for Unity文档中英对照版(简雨原创翻译)第六篇(音序器相关,语音同步) AddingVoiceoverstoAlertMessagesToaddextrahandling,suchasavoiceover(VO),toAlerts,addaLuaobservertoVariable[Alert]:添加画外音警报消息添加额外的处理,如画外音(VO),警报,添

Unity AssetBundle爬坑手记 这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对AssetBundle使用过程中的一些坑进行填补指引以及喷!AssetBundle

Unity for Absolute Beginners(三) GeneralLayoutWiththeprojectloaded,youshouldseeUnitysportingitsdefaultlayout.Ifyouareusingthefreeversion,theUIshouldappearinlightgray(Figure1-5).Ifyouhavepurchased,orareevaluating,UnityPro,thebackgroun

标签: unity打开c#

本文链接地址:https://www.jiuchutong.com/biancheng/382490.html 转载请保留说明!

上一篇:Unity destructor Or OnDestory

下一篇:Unity AssetBundle爬坑手记

  • 劳保用品发放制度文件
  • 期初余额有误怎么在本期做调整凭证
  • 卷烟批发环节消费税纳税义务发生时间
  • 建筑发票一般开几个点
  • 公司期货收入怎么交税
  • 企业销售软件需要结转成本吗
  • 工资结算汇总表会计科目
  • 工业企业会计报告
  • 支付金融机构手续费计入什么费用
  • 工程结算审核程序
  • 售后人员出差计入哪个科目
  • 收到客户不要的定金怎么做账?
  • 海关证需要年检吗
  • 3%的增值税专用发票可以退税吗可以抵扣吗
  • 地税税款未扣怎么处理
  • 企业所得税月交还是年交
  • 财务人员工资计入什么费用?
  • 上月印花税计提多了如何冲回
  • win7更改电脑设置在哪里
  • 王者荣耀如何充值退款
  • 白醋洗脸有什么好处
  • 路由器2.4g和4g有什么区别
  • win10系统如何开启蓝牙
  • 对于接受捐赠的资产价值,应计入当期损益
  • 房地产企业开发成本结转
  • 未分配利润冲减其他应付款分录
  • 所有者权益变动额怎么算
  • 营改增后房地产企业账务处理
  • 确认应付职工薪酬是借方还是贷方
  • 商业企业收到增值税
  • 非上市公司股权估值
  • 金税三期系统的对比有哪几个
  • 一个金税盘可以用一个用户名和密码开票吗
  • JavaScript数组(四):判断数组相等的4种方法
  • vue的ref怎么用
  • 人民法院司法警察警用装备
  • 母子公司之间的租赁房屋
  • 购进农产品直接销售核定农产品增值税进项税额计算表
  • 购买研发设备可以直接列入研发开支不
  • mysql一对多关系如何一次性查出来
  • 个人借款利息收入缴纳个税吗
  • 借受托代销商品贷受托代销商品款
  • 2023年终奖一次性扣税对照表
  • 固定资产折旧提完了继续使用
  • 停车位划线费用入什么科目
  • 房地产企业成本核算方法
  • 应收帐款的帐务处理流程
  • 企业所得税汇算清缴操作流程
  • 工程造价咨询公司招聘
  • 其它综合收益包括
  • 负债清偿损益明细表计税基础怎么填
  • 资产负债表本期没有发生额怎么填
  • 什么是小规模纳税人2023
  • 进口货物只有报关单能入账吗
  • 加权净资产收益率越高越好吗
  • 财务会计与预算会计差异如何处理
  • 认缴制下实收资本印花税
  • windows installation disc
  • win7系统旗舰版和纯净版的区别
  • win10的java环境该怎么配置?java环境变量配置介绍
  • 解决windows update问题
  • Linux系统中管理员如何获得root权限
  • groove音乐怎么添加本地音乐
  • Win10系统怎样把Word转成PDF
  • 快速锁定单元格的方法
  • mac怎么旋转窗口
  • launch software
  • PQIMountSvc.exe是什么进程 PQIMountSvc进程查询
  • linux常用桌面环境
  • python创建二维数据表
  • unity例子
  • linux中scp命令和scp命令用法大全
  • shell中echo命令详解
  • 置顶高手
  • jquery的用法
  • javascript闭包的作用
  • ios反编译源代码
  • 北京税务局网上怎么登录
  • 开票软件重置密码去哪里
  • 如何进行税务筹划的方法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设