有關jni的問題 |
答題得分者是:neoart
|
georgebig1
一般會員 發表:5 回覆:5 積分:2 註冊:2004-07-26 發送簡訊給我 |
下列程式我用BCB寫了一段jni的程式,java呼叫GetProcessList(),然後回傳AnsiString變數abc,卻出現錯誤訊息說"Cannot convert AnsiString to jstring",abc的型態設成String也不行,請大家教教我,到底是什麼問題,謝謝大家!! #include
#pragma hdrstop
#include "Unit2.h"
#include "tlhelp32.h"
#include "psapi.h"
#include
#include "ProcessList.h"
//-------------------------------------------------------------------
#pragma package(smart_init) //------------------------------------------------------------------- JNIEXPORT jstring JNICALL
Java_ProcessList_GetProcessList(JNIEnv *, jobject, jstring)
{
AnsiString abc; abc = "Hello!!";
return abc;
} 發表人 - taishyang 於 2004/08/25 14:18:00
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
為什麼不直接使用
JNIEXPORT jstring JNICALL Java_ProcessList_GetProcessList(JNIEnv *, jobject, jstring) { jstring abc; abc = "Hello!!"; return abc; }因為我沒用過 jstring 由 BCB5 的 include 目錄也找不到什麼相關資料, 不過您應該可以試試: JNIEXPORT jstring JNICALL Java_ProcessList_GetProcessList(JNIEnv *, jobject, jstring) { AnsiString abc; abc = "Hello!!"; return jstring(abc); }基本上,此函式的回傳值型態要是 jstring 而您原程式回的是 AnsiString 自然會有類似的 compile 錯誤。所以,只需要想辨法讓回傳的型態是 jstring 即可。 視動科技 VMASK - ViewMove Automation Software Kernel 發表人 - dllee 於 2004/08/25 04:59:28
------
http://www.ViewMove.com |
georgebig1
一般會員 發表:5 回覆:5 積分:2 註冊:2004-07-26 發送簡訊給我 |
|
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
歹勢,打擾一下.這是jni規格的問題.
Java_ProcessList_GetProcessList(JNIEnv *env, jobject jboj, jstring jstr){ ..... jboolean iscopy; char _destStr[80]="abc"; return env->GetStringUTFChars(_destStr,&iscopy); }參考: http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jnistring.html -------------------------------------------------------------------------- 風聲雨聲Codding聲,聲聲入耳 國事家事USER事,事事關心 發表人 - neoart 於 2004/08/25 19:36:19 |
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |