You are not logged in.

  • Login

1

Tuesday, June 19th 2007, 7:44am

convert jstring to LPCOLESTR

Hallo zusammen,

ich bin ein absoluter Neuling und habe meine Mühe und Not mit der Verarbeitung von Strings in C++.

Ich habe folgendes Problem:

Ich erhalte über das JNI einen jstring. Dieser beinhaltet den Pfad einer Datei, die ich erstellen möchte. Die Funktion "SetOutputFileName" benötigt allerdings, wenn ich das richtig verstehe, einen String vom Typ LPCOLESTR. Ich habe leider keine Ahnung, wie ich die Konvertierung vollziehen muss. Kann mir aber nicht vorstellen, dass das so schwer ist.

Ich hoffe ich konnte mich verständlich machen können und freue mich über jede Hilfe.

2

Tuesday, June 19th 2007, 5:43pm

Hab mir gedacht, dass es vielleicht besser ist, wenn ich den Code dazu schreibe...:-)

Also, die Nativ-Funktion, die via Java aufgerufen wird lautet:

JNIEXPORT void JNICALL Java_cmToolkit_cmEasyVideoRecorderJNI_startMovie(JNIEnv *env, jclass clazz, jstring jpath )
{
return;
}


Nun habe ich vor, mit "jpath"(welches den Pfad der Datei beinhaltet) die C-Funktion "SetOutputFileName" auszuführen. Ich habe es einfach so mal versucht:


JNIEXPORT void JNICALL Java_cmToolkit_cmEasyVideoRecorderJNI_startMovie(JNIEnv *env, jclass clazz, jstring jpath )
{
char cpath = (char) jpath;
LPCOLESTR lcpath = (LPCOLESTR)cpath;
m_pCapture->SetOutputFileName(&MEDIASUBTYPE_Avi,lcpath,&pMux
, &pSink);
return;
}

Aber das funktioniert leider nicht. Mit folgendem Code läufts:

JNIEXPORT void JNICALL Java_cmToolkit_cmEasyVideoRecorderJNI_startMovie(JNIEnv *env, jclass clazz, jstring jpath )
{
m_pCapture->SetOutputFileName(&MEDIASUBTYPE_Avi,L"C:\\Beispi
el.avi",&pMux, &pSink);
return;
}

Aber das bringt mir nichts, weil ich den Pfad eben über ne Variable steuern will.

Danke schon mal, für die Hilfe.

3

Tuesday, June 19th 2007, 7:09pm

Hat sich erledigt...mir wurde geholfen...

4

Tuesday, June 19th 2007, 7:53pm

wie war denn der richtige Funktionsaufruf?

Ein einzelnes char hat bestimmt nicht funktioniert. Vllt erst jstring nach char* casten ?
Und dann mit OLESTR zu einem Pointer auf String machen?

Social bookmarks