这段代码是通过C++代码调用Linux命令的,但是如何将其转换为使用NDK的库?
我看到有一些例子只使用了.C文件,并且在Jni中使用的变量与C ++变量不同。
这是我需要将其转换为使用NDK的C++代码。
如何安排这些文件以获得正确的解决方案?
#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;
}
如何安排这些文件以获得正确的解决方案?
std::string
返回值与 JNI 进行交互。 - πάντα ῥεῖ