64位Unity集成亲加(gotye)即时通讯SDK时的editor动态库设置DllNotFoundException

最近在测试亲加的语音聊天SDK(版本:gotyeapi_ex_v3.0_20170121_u3d.zip),由于直接提供了Unity版本的插件实现,简化了用Unity引擎开发的App集成时的难度,尤其还提供了Windows平台的实现,可在Editor环境下直接测试大部分功能,这是大部分平台相关SDK所不具备的!在实际测试中,发现了一些官方文档中没有说明的小问题,特记录于此。
首先,下载的zip并没有像官方文档中描述的一样,只有一个unitypackage,这点影响不大,直接解开zip中的内容,复制所有cs文件到项目中即可,后面根据官方文档上的指引,windows平台需要将对应32位或64位版本的Plugins中的dll复制到Unity安装路径的Editor下,也就是Unity编辑器执行文件所在的位置。这点要注意并不是常规的项目中的Plugins路径!操作完成后,项目中加入初始化代码,然后运行,出现了官方文档中提到的“win64下的U3D的DLL找不到”的问题:

DllNotFoundException: gotyeapi
gotye.GotyeAPI..ctor () (at Assets/gotye/GotyeAPI.cs:52)
(wrapper remoting-invoke-with-check) gotye.GotyeAPI:.ctor ()
gotye.GotyeAPI.GetInstance () (at Assets/gotye/GotyeAPI.cs:122)


官方中提到“msvcr120和msvcp120”两个库是否缺失的问题,很显然,在安装有VS以及各种VC再发行包的系统上是不会缺少这两个运行时库的,不过还是尝试了下按照官方的指引,将这两个dll复制到了Editor下,再次运行测试结果依然是报错!
后来看到了官方提示的用dependency walker查看主dll(gotyeapi.dll)的导入表检查缺失的引用库,然后仔细看了下(本来我是习惯用exescope的,但可能是太过历史了,这个dll打不开!),

赫然看到了”pthreadVC2_X64″这个引用库找不到的标记!原来,zip中包含的64位库中带的是个叫pthreadVC2.dll的库,虽然有可能不只是文件名不一样,但抱着先试一试的想法,改了下名pthreadVC2_X64.dll,然后再次编辑器播放运行就不报错了。

PS: 朋友的电脑在运行集成了SDK的项目后还出现了初始化时报”CodeDBError = 1002, // 操作数据库失败”的问题,检查后发现,本应该在Editor文件夹中生成的gotye.cache和gotye.data,说明dll所属进程对此文件夹操作受到了限制,尝试以管理员模式运行Unity后问题解决。

博主友情提示:

如在您的评论中需要提及如QQ号、微信号、电子邮件地址或其他隐私敏感信息,欢迎通过>>博主专用加密工具v2<<加密后发布,原文只有博主可以看到。