位置: 编程技术 - 正文

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爬坑手记

  • 金税盘开票系统怎么增加税目
  • 购销合同中约定产品质量问题引起的问题
  • 为什么要交税钱
  • 出口货物丢失起诉谁
  • 企业注销库存怎么做账
  • 收到投资款需要缴纳什么税
  • 商业企业能否计税
  • 复式记账法哪本书提到过?
  • 驾驶培训费可以报销吗
  • 广告公司对外捐赠的会计处理怎么做?
  • 出租固定资产取得的净收益计入什么科目
  • 小规模纳税人房租发票税率是多少
  • 以前年度长期股权投资漏记调整
  • 培训费没有发票怎么办
  • 异地上班员工报销路费
  • 医疗器械技术服务合同
  • 污泥处置中心所得税优惠政策
  • 本月开了负数发票怎么开
  • 年初未分配利润是什么科目
  • 公司买手机给员工怎么做账
  • 民营非盈利企业好申请吗
  • 签订租赁合同的期限
  • PHP选项代码
  • 航天信息服务费发票哪里打印
  • 一列火车穿过一条隧道,已知火车长450米,隧道长750米
  • php进程数量怎么决定
  • 4月满月是几号
  • 前端数据加密的三种方式
  • 删除数组中某个值的数
  • web前端面试题最新
  • 住宅专项维修资金是什么
  • 原材料按计划成本核算例题
  • javaweb项目开发流程
  • 多计提费用可以不用以前年度损益调整吗
  • 房租费可以一次性摊销吗
  • 消防工程材料费用占比
  • 代缴社保零申报对个人有影响吗
  • 金税盘如何读入新购电子发票?
  • 应付账款的平行登记
  • 金税盘税局端系统响应错误怎么解决
  • java守护线程和本地线程区别
  • 低值易耗品在年报上怎么看的
  • 如何判断关联
  • 非货币性资产交换的记忆口诀
  • 增值税包括哪三种类型
  • sql server管理员权限
  • 主营业务成本是借增贷减吗
  • 水利建设基金申报表哪里
  • 企业收到的财政性补贴要交企业所得税吗
  • 产权转移书据印花税减免政策
  • 出口未申报退税罚款多少
  • 固定资产报废的变卖收入计入哪个科目
  • 向非关联企业捐赠现金能不能抵扣
  • 差旅费属于什么会计要素
  • 新企业如何建帐
  • 会计科目设置的相关注意事项
  • eclipse连接mysql代码
  • mysql 含有关键字
  • win2003r2企业版密钥
  • ubuntu下的代码编辑器
  • 安装solaris11
  • mac不用密码
  • 联想电脑win7系统开机修改开机密码
  • win8 应用商店
  • windows8 如何关机
  • javascriptz
  • Append、Debug、Diskcomp命令的使用说明
  • perfcurve函数
  • angular指令详解
  • android studio string函数
  • python爬虫爬取网页数据
  • javascript设置字体
  • js会话
  • 企业去哪查
  • 新疆伊犁水费怎么交
  • 地税发票在哪里开
  • 纳税申报逾期怎样补报?
  • 外出经营需要交哪些税
  • 银行是不是要交社保
  • 车辆报废补贴怎么拿
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设