You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity调用C++原生插件出现EntryPointNotFoundException错误如何解决

错误原因及修复方案

你遇到的EntryPointNotFoundException错误最核心的原因是DLL导入名称配置错误,以下是完整的排查和修复步骤:

1. 核心错误修复:修正DllImport参数

你当前C#代码中使用的__Internal是静态链接平台专用的导入标识,仅适用于iOS、WebGL等将原生代码直接编译进Unity执行程序的场景,Windows平台调用独立编译的DLL时,需要填写你的DLL实际文件名。

将C#代码中的DLL导入常量修改为如下即可:

// 原错误写法
// const string dll = "__Internal";
// 修正后写法,和你VS中生成的DLL文件名一致(不需要加.dll后缀)
const string dll = "UnityPluginTest";

2. 其他可能的排查点

如果修改后仍然报错,请按以下顺序排查:

  • 检查DLL编译架构和Unity运行架构匹配:VS编译DLL时选择x64架构,和当前Unity编辑器的64位架构保持一致,不要选择x86或Any CPU架构。
  • 验证DLL导出函数名正确:使用VS自带的dumpbin工具执行命令dumpbin /exports UnityPluginTest.dll,确认输出的导出函数列表中存在RandomNumber,避免C++名字修饰导致函数名被篡改(你当前代码中已经加了extern "C",只要编译配置没错一般不会出现这个问题)。
  • 检查Unity中DLL的导入配置:在Unity编辑器的Project窗口选中Plugins文件夹下的DLL,在Inspector面板中确认「Editor」、「Windows」等你需要运行的平台已经被勾选,架构配置和你编译的DLL一致。

额外优化建议

你当前C++代码中每次调用RandomNumber都会执行srand((unsigned int)time(0))重设随机种子,短时间内多次调用会返回相同的随机值,建议把srand调用放到单独的初始化函数中,插件加载时仅执行一次。

内容的提问来源于stack exchange,提问作者HommusVampire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 16:45:00