2010-07-26 76 views
2

我有一個Java應用程序需要與Windows Mobile設備上的相機進行交互。我已經編寫了Java代碼和本機代碼,它都可以正常工作。我現在遇到的問題是我想開始將變量從Java傳遞到本機代碼,例如用於照片的目錄和文件名稱。Windows Mobile本機代碼 - jstring到LPCTSTR

本地代碼使用SHCAMERACAPTURE對象與相機進行交互,它期望使用LPCTSTR s指定目錄和文件名。在傳遞的字符串是的jstring,我可以通過調用得到一個const char *

const char *strDir=(jEnv)->GetStringUTFChars(dirName, 0); 

但我不知道我怎麼可以把它傳遞給了SHCAMERACAPTURE對象,因爲它不能轉換const char *LPCTSTR。我嘗試了一個演員(LPCTSTR)strDir並編譯了它,但運行時發現錯誤(它無法創建文件)。

我是一個Java開發人員,對C++等很新穎,所以我真的不太確定我需要做些什麼來讓我的字符串進入本地調用。有任何想法嗎?

回答

2

我認爲你應該嘗試GetStringChars()而不是GetStringUTFChars() 根據this page它會返回Unicode字符串。

的WindowsCE和Windows Mobile使用Unicode完全如此LPCTSTR 實際上是LPCWSTR(長指針爲const WideChar字符串)

SHCAMERACAPTURE shcc; 
ZeroMemory(&shcc, sizeof(shcc)); 
shcc.cbSize = sizeof(shcc); 
shcc.pszInitialDir = (TCHAR*)(jEnv)->GetStringChars(dirName, 0); 
shcc.pszDefaultFileName = (TCHAR*)(jEnv)->GetStringChars(defFileName, 0); 

我假設你想提供一個路徑和文件名。這是改編自this MS page

+0

'GetStringChars()'返回一個'const jchar *',所以我仍然不知道如何將它傳遞給我的本地對象? – DaveJohnston 2010-07-26 14:03:01

+0

查看最新的答案 – renick 2010-07-26 14:09:48

+0

什麼是'shcam.szFile'?和'GetStringChars()'不接受0個參數?你能解釋一下這行代碼試圖做什麼嗎?謝謝。 – DaveJohnston 2010-07-26 14:20:27