在Unity中调用C++代码遇到的问题1:出现EntryPointNotFoundException的解决办法:

1.背景:

我参考以下blog尝试在Unity中调用C++编译出的dll文件https://blog.csdn.net/monobehaviour/article/details/101612055
出现报错:
image.png
unity中的调用代码为:
image.png
c++的接口:
image.png

2.解决办法:

1.原因:
C语言文件在编译成dll文件时,dll中的函数名称和原C语言文件中的函数名一致;
cpp文件在编译成dll文件时,会对每个函数重新生成一个全球全时唯一的函数名(类似UUID)所以通过原函数名不足以访问到dll中的函数。
为了访问dll文件中的函数,需要查看每个函数的EntryPoint,顾名思义这就是进入函数时要确定EntryPoint的值。
2.解决:
a.用Visual Studio自带的developer Command Prompt for VS ,用dumpbin查看dll文件的entrypoint:
命令行:
dumpbin /exports+dll文件地址


image.png

image.png

name属性下的值就是每个元组的EntryPoint,ctl+c


image.png

b.在unity中使用DllImport时,给EntryPoint属性赋值:ctl+v
这里要注意:DllImport内的字符串不要加.dll
image.png

如是便解决了EntryPointNotFoundException的报错。

若dll文件涉及与硬件的交互,而unity中调用dll文件时和硬件的交互会发生错误,这个问题将在下一篇博客中介绍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容