博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决Unreal3 Can't bind to native class "xxx"异常退出的问题
阅读量:7038 次
发布时间:2019-06-28

本文共 1200 字,大约阅读时间需要 4 分钟。

转载自:

这通常发生在我们添加了新的native类,而且在当前包里生成了新的C++头文件的时候,比如说我们添加一个新的ExampleGameEngine的Native类。这样会重新生成一个ExampleGameGameEngineClasses.h头文件。

这时候如果我们直接编译的话不会出错,编译脚本也没问题,但是运行时会出现错误,提示:

.\Src\UnClass.cpp(2030): Assertion failed: appErrorf

Can't bind to native class ExampleGame.ExampleGameEngine
DEBUG-ExampleGame.exe 已触发了一个断点

这是因为我们在生成了新的C++头文件的时候忘了注册它,在该头文件中我们可以看到类似这样的代码:

DECLARE_NATIVE_TYPE(ExampleGame,UExampleGameEngine);#define AUTO_INITIALIZE_REGISTRANTS_EXAMPLEGAME_GAMEENGINE \UExampleGameEngine::StaticClass(); \#endif // EXAMPLEGAME_GAMEENGINE_NATIVE_DEFS

我们需要把这个宏添加到恰当的位置去注册它。添加到哪里呢?

全文搜索AUTO_INITIALIZE_REGISTRANTS_就可以找到类似的代码了,对于ExampleGame来说,就是在ExampleGame.cpp里面,UTGame在UTGame.cpp下面。

将函数修改为类似这样:

void AutoInitializeRegistrantsExampleGame( INT& Lookup ){AUTO_INITIALIZE_REGISTRANTS_EXAMPLEGAME;AUTO_INITIALIZE_REGISTRANTS_EXAMPLEGAME_TEXTURE;AUTO_INITIALIZE_REGISTRANTS_EXAMPLEGAME_GAMEENGINE;}

另外这个宏有意义还取决于一个宏定义的值:STATIC_LINKING_MOJO

因此我们在ExampleGame.cpp中包含新生成的头文件的时候需要注意它的位置,必须在STATIC_LINKING_MOJO存在且值为1的代码块中。另外由于各个版本的U3都有不同程度的变化,在添加头文件的时候还是需要注意的,这个可以参考已经存在的分类头文件,依样画葫芦就好了。

再次编译,问题搞定。

转载于:https://www.cnblogs.com/gdev/archive/2012/10/26/resolve-unreal-engine-cannot-bind-to-native-class-problem.html

你可能感兴趣的文章
DFS与BFS对比
查看>>
dedeCMS php语法在模版中的应用
查看>>
sublime 安装ctag 实现函数跳转
查看>>
sshd问题:A protocol error occurred. Change of username or service not allowed
查看>>
jQuery开发者眼中的AngularJS
查看>>
【DAY9】 关于多线程熊吃蜜Demo1的作业实验
查看>>
Python实现多属性排序
查看>>
nginx 访问日志分析
查看>>
RabbitMQ之消息确认机制(事务+Confirm)
查看>>
给出一个数组,计算数组中少了哪个数据的实现
查看>>
USB-232卡 配置
查看>>
C#窗体程序皮肤设置
查看>>
T-SQL.字符串函数
查看>>
mysql慢查询
查看>>
offices文件打开乱码问题如何处理
查看>>
抓屏程序
查看>>
many-to-many出现的问题
查看>>
第5章 配置邮箱服务
查看>>
node.js的一个简单框架
查看>>
PPT如何保存还原已剪裁图片的原始版本
查看>>