【发布时间】:2016-09-26 11:52:37
【问题描述】:
我在新版本的 Android Studio 中创建了一个小测试项目来测试新的 c++ 支持。
我尝试从共享库中调用函数。该函数位于另一个 .cpp 文件中
这是我的 CmakeLists.txt 文件的一部分:
add_library(JNI SHARED src/main/cpp/native-lib.cpp)
add_executable(testex src/main/cpp/test2.cpp)
INCLUDE_DIRECTORIES (src/main/cpp)
target_link_libraries(testex JNI)
test2.h 文件:
class Test{
public:
int side;
intgetArea();
};
test2.cpp 文件:
#include "test2.h"
int Test::getArea(){
return side*side;
}
还有我的 native-lib.cpp 文件的一部分:
JNIEXPORT jstring JNICALL
.....(JNIEnv *env,jobject instance){
Test *test = new Test();
test->getArea();
.
.
.
我得到这些错误:错误: 未定义对 'Test::getArea()
的引用clang++:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
ninja:构建停止:子命令失败。
我希望有人可以帮助我:)
【问题讨论】:
-
您应该考虑考虑库等的工作方式。您的 test2.cpp 在您的可执行文件中编译。那你就不能在图书馆里使用它了。
标签: android c++ android-ndk cmake