有上С功能(traverser.c模塊)
long int
Traverser(const char * sTraversingRoot)
{
long int nCount;
struct stat rStatBuf;
time_t nTime;
char sActualPath[512];
PGconn *pConn;
// Open DB connection
sprintf(sConnInfo,
"hostaddr=%s port=%s connect_timeout=50 dbname=%s user=%s password=%s",
sIP, sPort, sDBName, sLogin, sPassword);
pConn = PQconnectdb(sConnInfo);
if (PQstatus(pConn) == CONNECTION_BAD) {
AddErrorToLog("No connect\n");
return 0;
}
GetActualPath(sActualPath, sTraversingRoot);
if (*sActualPath) {
stat(sActualPath, &rStatBuf);
} else {
stat("/", &rStatBuf);
}
if (nClock)
nTime = time(NULL);
if(S_ISREG(rStatBuf.st_mode)) {
nCount = 1;
ProcessFile(pConn, sActualPath);
}
if(S_ISDIR(rStatBuf.st_mode)) {
nCount = _Traverser(pConn, sActualPath);
}
if (nClock)
fprintf(stdout, "Total time : %u second(s)\n", time(NULL) - nTime);
// Close DB connection
PQfinish(pConn);
return nCount;
}
我想創建在Java上使用相同名稱的本地方法
public native void Traverser(String path)
分別traverser.c模塊中會有一個功能
JNIEXPORT void JNICALL Java_ParallelIndexation_Traverser(JNIEnv *env, jobject obj, jstring path)
的Java_ParallelIndexation_Traverser功能是從traverser.c module.The問題的使用移動功能包裝:如何調用從橫移模塊在Java_ParallelIndexation_Traverser中的traverser.c,傳遞給它參數jstring路徑,從而將它轉換爲一個const char *(簽名Traverser見上)?
所以就是你真正問的問題,如何從傳遞給JNI函數的java jstring參數獲取char *? [This may help](http://stackoverflow.com/questions/4181934/jni-converting-jstring-to-char) – WhozCraig
在SO問題中使用減少的問題/代碼示例更好。它看起來像95%的代碼與您面臨的問題無關。 – millimoose
@WhozCraig,你正確的理解了我。 – user1730626