栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

如何在unity内用vs引用c++语言写的dll

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在unity内用vs引用c++语言写的dll

简单介绍:

调用dll分为两类,
一类是托管dll
托管代码: 是由公共语言运行库(CLR)执行的代码,而不是由操作系统直接执行。本地代码经过两次编译,第一次将源代码编译成中间代码(MSIL,MicrosoftIntermediate Language),第二次由.net中的CLR将中间代码编译成机器代码。程序实际上是被“托管”在公共语言运行库中。随着程序集的运行,公共语言运行库会持续地提供各种服 务,例如内存管理、安全管理、线程管理等等。
引用方法:
“在解决方案管理器” - “解决方案”(或项目) 中的任意地方, 右键“添加引用”,“浏览”,选择你需要调用的dll文件,确定即可,该dll会自动复制到bin目录,打包时也会自动复制到你发布的地方。
调用方法:
如果有命名空间则引入命名空间,比如你的.dll里面,是a命名空间,有一个b类,然后有一个无参数静态方法c那么调用方法就是a.b.c(),跟你普通的使用类是一样的
另一类就是非托管类dll,也叫本地代码。
具体引用方法和调用方法如下。


引用方式:

dll长下面这样。到时候会收到下面截图中一样的3个文件:

然后打开.h文件,长下面这样:

注意JXSY,它就是你要引用的dll名字。然后把.dll文件复制到unity内随意一个文件夹内。再在unity内,随意新建一个C#类,在里面加入以下代码。
1.双引号内是你添加的dll名称,
2.函数是你要用的函数的名称,再加上private static extern ,
3.参数类型,char *类参数可以换成string 类的参数,如果报错可以在string参数前添加 [MarshalAs(UnmanagedType.LPStr)] 通过MarshalAs特性告诉.NET应该封送成什么类型给非托管代码去玩。

    [Dllimport("JXSY")]
    private static extern void Chushihua(string shiyanbianhao);

类前添加空间名称,你不添加,也会自动提示

using System.Runtime.InteropServices;

像下面这样的值传递参数,需要用到ref

extern "C" JXSY void ShuzhiSet(char *name, double lalalain);//数值填入的函数

如下图所示方式在参数前添加ref。

    [Dllimport("JXSY")]
    private static extern void ShuzhiSet([MarshalAs(UnmanagedType.LPStr)] string name, ref double lalalain);
调用方式:

使用的时候如下图方式使用就可以了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/317049.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号