第一.h
#ifndef FIRST_H
#define FIRST_H
class Test
{
public:
void create();
void test();
private:
};
#endif /* FIRST_H */
第二个.cpp
#include "first.h"
#ifdef __cplusplus
extern "C" {
#endif
jint
Java_com_example_ndkcpp2_MainActivity_stringFromJNI( JNIEnv* env,
jobject thiz )
{
Test t;
t.test();
}
#ifdef __cplusplus
}
#endif
当我在 second.cpp 上进行 NDK 构建时,我得到了
pp2/jni/second.cpp:44: 错误:未定义对“Test::test()”的引用 collect2: ld 返回 1 个退出状态
最佳答案
使用 C++,您在 .h 文件中声明类并在 .cpp 文件中编写实现。例如,您创建了 First.h,那么您应该创建 First.cpp,在其中编写您的方法实现,如 void Test::test(){}
。请记住将 First.cpp 添加到您的 makefile(Android.mk) 中进行编译。
关于Android NDK C++ 类未定义引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18832788/