C++使用jniHelper控制android端广告出错

system
Thu, 16 Aug 2012 04:50:52 +0000

做移植时想添加控制admob广告的一个函数，于是用jni：
win7，,vs2010，cocos2d-1.0.1-x-0.12.0，工程头文件中添加
#include “JniHelper.h” //就是platformandroidjni里面那个

JniHelper.h使用jni.h 所以从JDkinclude拷贝到工程下导入 #include “jni.h”
JniHelper.cpp 要用到log.h,所以从NDKplatformsandroid-14arch-x86usrincludeandroid里面拷贝到工程下导入
添加#include “log.h”
然后因为jni.h还要用jni_md.h，所以从JDKwin32拷贝到工程下导入
结果运行报错：
1> JniHelper.cpp
1>d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.cpp(61): error C2664: “JavaVM_::AttachCurrentThread”: 不能将参数 1 从“JNIEnv **”转换为“void **”
1> 与指向的类型无关；转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.cpp(164): warning C4190: “jstring2string_”有指定的 C 链接，但返回了与 C 不兼容的 UDT“std::basic_string<_Elem,_Traits,_Ax>”
1> with
1>
1> _Elem=char,
1> _Traits=std::char_traits,
1> Ax=std::allocator
1> ]
1>d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.cpp(186): warning C4273: “m_psJavaVM”: dll 链接不一致
1> d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.h(51) : 参见“private: static JavaVM * cocos2d::JniHelper::m_psJavaVM”的前一个定义
1>d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.cpp(186): error C2491: “cocos2d::JniHelper::m_psJavaVM”: 不允许 dllimport 静态数据成员 的定义
1>d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.cpp(189): warning C4273: “cocos2d::JniHelper::getJavaVM”: dll 链接不一致
1> d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.h(43) : 参见“getJavaVM”的前一个定义
1>d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.cpp(194): warning C4273: “cocos2d::JniHelper::setJavaVM”: dll 链接不一致
1> d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.h(44) : 参见“setJavaVM”的前一个定义
1>d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.cpp(199): warning C4273: “cocos2d::JniHelper::getClassID”: dll 链接不一致
1> d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.h(45) : 参见“getClassID”的前一个定义
1>d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.cpp(204): warning C4273: “cocos2d::JniHelper::getStaticMethodInfo”: dll 链接不一致
1> d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.h(46) : 参见“getStaticMethodInfo”的前一个定义
1>d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.cpp(209): warning C4273: “cocos2d::JniHelper::getMethodInfo”: dll 链接不一致
1> d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.h(47) : 参见“getMethodInfo”的前一个定义
1>d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.cpp(214): warning C4273: “cocos2d::JniHelper::jstring2string”: dll 链接不一致
1> d:cocos2d-1.0.1-xcocos2dxplatformandroidjnijnihelper.h(48) : 参见“jstring2string”的前一个定义

很纠结的问题，请各位大大解答。

阅读整个主题