Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)

时间:2022-09-01 15:54:32

由于最近开发游戏寻路A*使用非常频繁.所以是逻辑上的瓶颈. c#又比c++慢一倍.所以决定上c++.这样算一种优化吧.哈哈.

关于vs上的vc++.分托管和非托管模式.  托管模式就是 C++/CLI 也就说可以c++使用.net库. 和 CLR是一起的.  还有就是 非托管模式就是传统的c++直接调用win32 API.

两种方式都可以创建dll. 但是如果是和c# 连用肯定是 托管模式的更方便一些.下面就讲解下如何 unity3d 使用 CLR的C++/CLI.网上充斥着 使用非托管模式c++和unity连用的方式,这里本尊就不在阐述了..

书归正传:


环境:

1. vs2012 或者 vs2013.

2. unity4.3.0


首先说一下CLR项目的创建.

打开vs.然后新建. 这时候选择. CLR库项目.

Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)


之后就进入了项目.然后加入如下代码 用来测试 是否dll 被使用. a 和 b 相加返回结果.很简单的程序.

Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)


之后就是需要改一些项目的属性. 因为unity使用mono的原因. 

1.Framework3.5 是 unity的版本. 这里本人的vs是2012/2013 使用fw 4.5了. 所以高了这里需要降下来.由于IDE里面没有选项所以需要打开 proj文件来修改版本.

Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)

Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)

把v4.5 改成 v3.5就ok.


2.clr也是很多版本的. unity支持 safe的clr. 所以这个也需要改.

Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)

项目上面 右键属性.

Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)

选成 safe的clr.就可以了. 然后编译出来 dll.


最后就是.把dll copy到unity里面去使用.unity需要建一个plugin的文件夹来存放dll.

Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)

放到这个文件夹里 之后.unity就可以使用了.

然后我们创建一个unity的c#脚本.来调用TSEngineCLI.

Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)

之后把这个c#脚本拖到随便一个GameObject上面. 运行一下. 会看到Console框 里面输出了3. 说明大功告成.哇嘎嘎.


好了.祝大家看的开心.编的愉快. 拜拜~...