2010-07-26 7 views
2

J'ai une application Java qui doit interagir avec la caméra sur un appareil Windows Mobile. J'ai écrit le code Java et le code natif et tout fonctionne bien. Le problème que j'ai maintenant est que je veux commencer à passer des variables de Java au code natif, par exemple. le répertoire et le nom de fichier à utiliser pour la photo.Code Windows Mobile natif - jstring to LPCTSTR

Le code natif utilise un objet SHCAMERACAPTURE pour interagir avec la caméra et attend que le répertoire et le nom de fichier soient spécifiés en utilisant LPCTSTR s. La chaîne passée en est un jstring, que je peux obtenir un const char * en appelant:

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

Mais je ne sais pas comment je peux passer ce à l'objet SHCAMERACAPTURE car il ne peut pas convertir const char *-LPCTSTR. J'ai essayé un cast (LPCTSTR)strDir et il compilé, mais j'obtiens une erreur quand il s'exécute (qu'il ne peut pas créer le fichier). Je suis un développeur Java et assez nouveau en C++, donc je ne sais pas vraiment ce que je dois faire pour obtenir ma chaîne dans l'appel natif. Des idées?

Répondre

2

Je pense que vous devriez essayer GetStringChars() au lieu de GetStringUTFChars() Selon this page il renvoie la chaîne Unicode.

WindowsCE et Windows utilisation mobile UNICODE exclusivement si LPCTSTR est en fait LPCWSTR (Long pointeur à Const WideChar cordes)

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

Je suppose que vous voulez fournir un chemin et un nom de fichier. Ceci est adapté de this MS page

+0

'GetStringChars()' renvoie un 'const jchar *', donc je ne sais toujours pas comment je peux le passer à mon objet natif? – DaveJohnston

+0

voir la mise à jour – renick

+0

Qu'est-ce que 'shcam.szFile'? et 'GetStringChars()' ne prend pas 0 arguments? Pouvez-vous expliquer ce que cette ligne de code essaie de faire? Merci. – DaveJohnston