unity 调用 .dll 或 .so时遇到的问题

在Unity中使用.dll或.so文件时可能会遇到兼容性问题。1) 32位.dll无法在64位编辑器运行,导致DllNotFoundException。2) 如果CPU配置不匹配,会提示预期的x64架构错误。3) 函数入口点找不到,可能是因为C++函数未通过extern "C"封装。解决方案包括重新编译为正确架构,确保使用C接口和检查函数名混淆。eXeScope工具可用于查看编译后的函数名称。
摘要由CSDN通过智能技术生成

1、32位的 .dll 无法在64位的unity编辑器下运行。

System.DllNotFoundException: xxx  , 64位的程序运行32位的dll是会报这种错

2、Failed to load 'Assets/Plugins/xxx.dll', expected x64 architecture, but was x86 architecture. You must recompile your plugin for x64 architecture.

将CPU选择.dll对应的CPU

3、System.EntryPointNotFoundException:Unable to find an entry point

原因就是:c++源代码中的函数在编译成DLL后,函数的名称就发生了改变:会在函数的前后产生一些字符。所以找不到方法的入口点。

    [DllImport(dllName, EntryPoint = "?Free@@YAHXZ")]
    private static extern int Free();

  

Free的名字编译为dll时,变成了  ?Free@@YAHXZ  ,猜想可能的原因是直接写的C++接口,而不是C接口

即,可能是没有通过 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值