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文件时和硬件的交互会发生错误,这个问题将在下一篇博客中介绍。