我正在尝试为cocos2dx编写一个Android插件。但我似乎遇到了(基本?)c ++障碍。 我遇到以下错误 - 见下文:( shortVersion - “'ProtocolAds'没有命名类型。”)。
make.exe: Entering directory `C:/Android/Cocos2d/cocos2d-x-cocos2d-x-3.6/CocosPr
ojectWoobiDemo/proj.android'
[armeabi] Compile++ thumb: cocos2dcpp_shared <= HelloWorldScene.cpp
[armeabi] StaticLibrary : libcocos2d.a
[armeabi] StaticLibrary : libcocostudio.a
[armeabi] StaticLibrary : libcocosbuilder.a
[armeabi] StaticLibrary : libcocos3d.a
[armeabi] StaticLibrary : libspine.a
[armeabi] StaticLibrary : libnetwork.a
[armeabi] StaticLibrary : libui.a
[armeabi] StaticLibrary : libaudioengine.a
[armeabi] StaticLibrary : libcocosdenshion.a
[armeabi] StaticLibrary : flatbuffers.a
[armeabi] StaticLibrary : libextension.a
[armeabi] StaticLibrary : libcocos2dxinternal.a
[armeabi] StaticLibrary : libbox2d.a
[armeabi] StaticLibrary : libcocos2dandroid.a
[armeabi] StaticLibrary : libcpufeatures.a
[armeabi] Gdbserver : [arm-linux-androideabi-4.9] libs/armeabi/gdbserver
[armeabi] Gdbsetup : libs/armeabi/gdb.setup
jni/../../Classes/HelloWorldScene.cpp: In member function 'void HelloWorld::test
Func()':
jni/../../Classes/HelloWorldScene.cpp:97:24: error: 'ProtocolAds' does not name
a type
_woobi = dynamic_cast<ProtocolAds*>(PluginManager::getInstance()->loadPlugin("
Woobi"));
据我所知,没有命名类型是链接器不知道对象类的错误(出于任何可能的原因)。
我的想法:
怎么可能?我一直在阅读并尝试了大量的时间而没有获胜。有人可以帮忙吗?
答案 0 :(得分:0)
似乎您应该将它与名称空间说明符一起使用:dynamic_cast<cocos2d::plugin::ProtocolAds*>
答案 1 :(得分:0)
看起来在标题中添加以下两行:
- #include&#34; PluginManager.h&#34; 使用命名空间cocos2d :: plugin;
使用此命名空间对于非cpp开发人员来说并不重要。 考虑到这些文件位于预编译库中,您如何理解ProtocolAds.h位于cocos2d :: plugin的命名空间中?
我怀疑它会,但希望这会帮助至少一个我自己以外的人。