這段代碼通過使用C++代碼調用了Linux命令,但是如何將它轉換爲通過NDK將它用作lib? 我看到只使用.C文件的示例,以及Jni使用的與C++變量不同的變量。如何轉換C++代碼爲NDK?
這個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(字符* 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進行交互 – 2013-03-02 12:02:27