关于c++调用java

我想接入广告SDK,在c++中通过jni调用java中的方法
c++部分:
void showAd::showad()
{

#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo, "org/cocos2dx/cpp/AppActivity", "showAd", "()V");
if (!isHave){
    log("jni::showAd is null");
}
else
{
    minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
}

#endif

}

这是java中的方法:
public static void showAd(){
instance.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            RelativeLayout layout = new RelativeLayout(instance);
            instance.addContentView(layout, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
            
            adView = new AdView(instance);
            layout.addView(adView);
            adView.loadAd(new AdRequest());
            
            
        }
    });
    
}

检查了好多次,没发现有错,但是它会报这个错:
make.exe: *** Error 1 testApple4 C/C++ Problem
undefined reference to ‘showAd::showad()’ testApple4 line 42 C/C++ Problem

求大神帮忙,小弟十分感激~~~:6: :6:

你确定 showAd() 这个方法 在 org.cocos2dx.cpp.AppActivity 类里面?

(1)C++部分:

在HelloWorld.cpp增加如下函数,用于调用java代码。

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
  #include 
  #include "platform/android/jni/JniHelper.h"
  #include 
  #endif

  void HelloWorld::testJNI()
  {
  #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
      JniMethodInfo minfo;

      bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/cpp/AppActivity","testjni", "()V");

      if (!isHave) {
          log("jni:testjni is null");
      }else{
          minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
      }
  #endif
  }
```

(2)Java部分:

在org.cocos2dx.cpp.Activity中增加如下函数,供C++调用。

public static void testjni() {
      System.out.println("From Java");
  }
```

更详细的使用说明,请参考:http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html

已经解决了,忘记在mk中加cpp路径了 ,谢谢大家:9: