此代码使用 C++ 代码调用 Linux 命令,但如何将其转换为通过 NDK 将其用作 lib?我看到仅使用 .C 文件的示例,以及 Jni 使用的变量与 C++ 变量不同。
这个 c++ 代码我需要将其转换为使用它,然后与 NDK 一起使用
#include <string>
#include <iostream>
#include <stdio.h>
std::string exec(char* cmd) {
FILE* pipe = popen(cmd, "r");
if (!pipe) return "ERROR";
char buffer[128];
std::string result = "";
while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
pclose(pipe);
return result;
}
这适合做吗?
在Android.mk中
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Here we give our module name and source file(s)
LOCAL_MODULE := NDK1
LOCAL_SRC_FILES := NDK1.cpp
include $(BUILD_SHARED_LIBRARY)
假设我的本机方法是 exec(char* cmd),对于NDK1.cpp
#include <string>
#include <iostream>
#include <stdio.h>
#include <jni.h>
jstring Java_com_mindtherobot_samples_ndkfoo_MainActivity_exec(JNIEnv* env, jobject javaThis , Jchar* cmd) {
......... same code above
return result;
}
如何安排这些文件以获得正确的解决方案?