このコードはC++コードを使用してLinuxコマンドを呼び出しましたが、NDKを介してlibとして使用するように変換するにはどうすればよいですか?.Cファイルのみを使用する例と、C++変数とは異なるJniで使用される変数が表示されます。
この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)
NDK1.cppの場合、ネイティブメソッドがexec(char * cmd)であるとします。
#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;
}
これらのファイルを正しい解決策にする方法は?