找回密码
 注册帐号

扫一扫,访问微社区

十月 C++/CLI dll import unity3d科普

3
回复
461
查看
[ 复制链接 ]
排名
9015
昨日变化

19

主题

72

帖子

1440

积分

Rank: 9Rank: 9Rank: 9

UID
7908
好友
14
蛮牛币
779
威望
0
注册时间
2013-11-13
在线时间
207 小时
最后登录
2019-9-6

专栏作家

2019-8-24 05:08:43 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
题目吸引了你进来,可是这篇文章并不是为了告诉你怎么实现,而是为了告诉你,请你放弃这条路,因为我已经撞过很多次这个墙了。浪费了大量时间,过一阵子就忍不住撞一下。

具体来说,我自己也曾经写过C++的托管库怎么运用在unity3d中,当时放在了官方论坛上(这个后来意外,被官方的维护人员给清空了,所以,没了。)
另外,可以参照http://www.manew.com/thread-32745-1-1.html

按照这个介绍很简单,你自己测试也一切通顺,于是,会给你一个无限遐想,你会开始忍不住想着哪些native dll有没有可能性也这样直接来一层wrapper,然后,爽歪歪,因为p/invoke实在太low了。

我很恭喜的告诉你,请你戒掉你的梦想。因为这是一条不归路。

之所以上面那篇文章可以运行,是因为你选择的不是CLI,而是因为你选择了CLI:safe或者CLI:pure。这两个啥意思呢,具体参照https://docs.microsoft.com/zh-cn/previous-versions/k8d11d4s(v=vs.120)
简而言之就是其实你虽然用的是c++写代码,但是你写的是完全托管模式的。是不是想到了C#,是的,其实你就是在写C#,准确的说你现在写的和别人写的C#并无本质区别,你们都会变成一样的东西。

而悲惨的是,如果你想给native dll来一层wrapper,你必须使用的是mixed模式的CLI。

如果你还不死心,你可以测试下,你可以做个最简单的,直接按照
http://www.manew.com/thread-32745-1-1.html这个,你把公共语言运行时支持选项改成“公共语言运行时支持(/clr)”,来测试下,是不是发现unity不支持了。


如果你还不死心,你可以再来做一个真实的项目,对着native dll进行包一层,然后选择“安全 MSIL 公共语言运行时支持(/clr:safe)”来编译,爽了吧,visual studio崩溃了吧,是的,崩溃了,恭喜你,因为报错太多了,vs都扛不住了,被你搞死搞残了。


都报的什么错呢,未知类型,花式未知类型,各种未知类型。


为什么如此呢,因为你选择的要让他MSIL,但是,你可是要用native dll的,你有很多非托管的代码,你这是把这些非托管代码往梁山上逼。



这篇文章废话这么多,就是为了给有缘的人一个忠告,千万别再尝试C++.net来作为中间层来粘合native dll与unity3d,你会死无葬身之地。老老实实用你觉得非常low的p/invoke吧


再给个连接地址:

https://issuetracker.unity3d.com/issues/unity-editor-silently-crashes-when-calling-a-function-inside-a-c-plus-plus-dll




回复

使用道具 举报

3偶尔光临
290/300
排名
19948
昨日变化

2

主题

184

帖子

290

积分

Rank: 3Rank: 3Rank: 3

UID
328743
好友
0
蛮牛币
35
威望
0
注册时间
2019-8-5
在线时间
74 小时
最后登录
2019-9-16
2019-8-24 09:02:03 显示全部楼层
.............................
回复

使用道具 举报

6蛮牛粉丝
1069/1500
排名
7479
昨日变化

2

主题

34

帖子

1069

积分

Rank: 6Rank: 6Rank: 6

UID
130007
好友
0
蛮牛币
1202
威望
0
注册时间
2015-11-26
在线时间
863 小时
最后登录
2019-9-6
QQ
2019-8-26 09:54:41 显示全部楼层
。。。就很能体会楼主的心情
回复 支持 反对

使用道具 举报

排名
9399
昨日变化

13

主题

224

帖子

1088

积分

Rank: 9Rank: 9Rank: 9

UID
21402
好友
16
蛮牛币
62
威望
0
注册时间
2014-4-14
在线时间
570 小时
最后登录
2019-9-16

认证开发者

2019-9-6 18:29:14 显示全部楼层
撞墙了吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则