位置: 编程技术 - 正文

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

发布时间:2024-02-27
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爬坑手记

  • 应交税金指什么意思
  • 递延所得税费用在资产负债表哪一项
  • 非居民纳税人是小规模纳税人
  • 法人股东分红要交企业所得税吗
  • 工会筹备金需不需要计提
  • 营业费用和管理费用比较
  • 营业额和合同额的区别
  • 固定资产折旧提完了之后还要怎么处理吗
  • 党组织专项经费项社区服务队项目简介
  • 金融企业发放贷款时发生的交易费用
  • 年度所得税汇算清缴报告在哪打印
  • 出售无形资产的会计科目
  • 城建税按实际缴纳增值税
  • 原始凭证的基本内容包括会计科目吗
  • 收取赔偿金开具什么发票
  • 文件类型错误请重新选择
  • 计提的跌价准备销售时怎么处理
  • 购买原材料折扣做什么会计科目
  • 出租的厂房房产税谁交
  • 无线路由器如何桥接wifi信号
  • 代开房租的税点计入什么科目?
  • assoc .exe=exefile是什么
  • php加密后怎么运行
  • php输出流
  • PHP:iconv_strrpos()的用法_iconv函数
  • 债权转让抵押权一并转让,需要办理抵押变更手续
  • 交易性金融资产公允价值变动计入
  • jquery获取值的几种方法
  • 10年未被强制修复!黑客利用Windows旧漏洞攻击通信公司并分发恶意文件
  • 将10万元存款投入企业的会计分录
  • python 字典中的字典
  • 海关进口增值税专用缴款书如何抵扣
  • "服务业"
  • 固定资产盘点方案
  • sql server索引怎么用
  • SQL Server 2005 镜像构建手册(sql2005数据库同步镜像方案)
  • 如何恢复sql server误删除的数据库
  • 用mysql的小技巧
  • 房屋租赁物业费谁承担
  • 增值税留抵扣额
  • 增量留抵税额退税的计算公式为
  • 农民专业合作社属于什么经济类型
  • 外购商品职工福利进项税额转出如何记账?
  • 税控盘 减免
  • 经济纠纷引发的抢劫
  • 已收款未开票未发货能确认收入吗
  • 应付股利科目怎么结转
  • 职工福利费支出不超过工资薪金总额的
  • 服务行业收入会增加吗
  • 新成立的公司能干吗
  • 承兑汇票贴现怎么做会计分录
  • 子公司注销前资金怎么办
  • 应收账款资产减值准备可以在所得税前扣除吗
  • 小规模纳税人购进税控机的税如何抵扣
  • 利息收入核算什么科目
  • mysql外键怎么写
  • 总结下半年工作计划
  • mysql 授权命令
  • vista技巧:更改电源默认按钮为关机
  • Windows Server 2008下的网络排错
  • win7系统为什么玩不了游戏
  • win10预览版与正式版
  • 如何设置虚拟内存大小
  • linux rpm包位置
  • mysql如何建立数据完整性约束
  • mac os 必装软件
  • oracle linux版
  • our与my的区别
  • 使用forever管理nodejs应用教程
  • js实现计算器代码
  • 定时软件有哪些
  • activity启动流程图解
  • Android ImageLoader 本地缓存
  • 广州市地税局副局长
  • 农机免税范围
  • 酒店,旅店的营业范围
  • 政府给予补贴
  • 降低税率的坏处
  • 怎么修改纳税人信息
  • 税务津贴提高1100
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号