编译cocos2d-x的插件时出现Cpp错误

时间:2015-05-19 08:33:06

标签: android c++ makefile cocos2d-x

我正在尝试为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"));

据我所知,没有命名类型是链接器不知道对象类的错误(出于任何可能的原因)。

我的想法:

  • 错误是“错误:'ProtocolAds'未命名类型”
  • 错误发生在包含以下行的.cpp文件中:#include“ProtocolAds.h”
  • 上述.cpp文件的头文件具有相同的行:#include“ProtocolAds.h”。并呼吁这一行:cocos2d :: plugin :: ProtocolAds * _woobi;看起来这个文件对ProtocolAds没有任何问题。 (因为如果我没有从.cpp文件调用ProtocolAds,.h编译和链接没有错误)

怎么可能?我一直在阅读并尝试了大量的时间而没有获胜。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

似乎您应该将它与名称空间说明符一起使用:dynamic_cast<cocos2d::plugin::ProtocolAds*>

答案 1 :(得分:0)

看起来在标题中添加以下两行:

- #include&#34; PluginManager.h&#34; 使用命名空间cocos2d :: plugin;

使用此命名空间对于非cpp开发人员来说并不重要。 考虑到这些文件位于预编译库中,您如何理解ProtocolAds.h位于cocos2d :: plugin的命名空间中?

我怀疑它会,但希望这会帮助至少一个我自己以外的人。