Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > Using JNI from Managed C++

Reply
Thread Tools

Using JNI from Managed C++

 
 
dorkrawk@gmail.com
Guest
Posts: n/a
 
      07-27-2006
Hey, I'm working with a Java Native Interface from managed C++
(MS Visual C++ .net 2003... if these details help) and I keep having
issues with mixing managed and nonmanaged types for example...

Code:
__value __nogc struct JNI_Interface
{
	 JavaVM __nogc  *jvm;       /* denotes a Java VM */
	 JNIEnv __nogc *env;       /* pointer to native method interface */
	//static jobject phone_obj;   // phone object to make JNI calls to PTF
with

	int jni_startJVM();
	int jni_checkException(char* jni_call);
	int jni_startCom();
};
Code:
JNI_Interface::jni_startJVM()
{
....
jint res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); // error on
this line
....
}
causes this error (error thrown on JNI_CreateJavaVM() call)....

jni.cpp(34) : error C2440: 'type cast' : cannot convert from 'JNIEnv
*__gc * ' to 'void ** '
Cannot convert a managed type to an unmanaged type
jni.cpp(34) : error C2664: 'JNI_CreateJavaVM' : cannot convert
parameter 1 from 'JavaVM *__gc * ' to 'JavaVM ** '
Cannot convert a managed type to an unmanaged type

I've tried all sorts of __nogc stuff but it keeps throwing these errors
on build. Does anybody have any ideas or has anyone else worked w/ JNI
within managed C++?

 
Reply With Quote
 
 
 
 
Chris Uppal
Guest
Posts: n/a
 
      07-28-2006
http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:

> Hey, I'm working with a Java Native Interface from managed C++


Boy! You're no fan of the simple life are you ?



I haven't done /anything/ with "managed C++", so take the rest of this with due
caution.

For a start, I wouldn't mess with the declarations the SUN provide -- they are
carefully designed to allow the JVM to access stuff at a lower level than
"portable C" (or C++). I.e. it knows about memory layouts and other such
stuff. So what I would do, as a first attempt, would be to write a bridge
component -- entirely in /real/ C++ (compiled to a normal, not .NET, DLL).
That component would do all the talking to JNI. I would then create a .NET
interface to that DLL, using the unmanaged C++ features.

A lot of work, and maybe not necessary, but I'd be rather surprised to find
that anything less complicated actually worked.

However, even that might not work. There is no guarantee that the Sun JVM and
the .NET equivalent will be happy sharing an address space. They both use very
low-level features of the OS (like setting guard pages, directly accessing the
processor stack, and so on) and might easily end up stepping on each other's
feet.

-- chris



 
Reply With Quote
 
 
 
 
Vitaly
Guest
Posts: n/a
 
      07-30-2006
Hi,
see JNI SDK for .NET at
http://www.simtel.net/product.php[id]95126[sekid]0[SiteID]simtel.net
It has the same functionality as Regular JNI for C++.






<(E-Mail Removed)> wrote in message
news:(E-Mail Removed) oups.com...
> Hey, I'm working with a Java Native Interface from managed C++
> (MS Visual C++ .net 2003... if these details help) and I keep having
> issues with mixing managed and nonmanaged types for example...
>
>
Code:
> __value __nogc struct JNI_Interface
> {
> JavaVM __nogc  *jvm;       /* denotes a Java VM */
> JNIEnv __nogc *env;       /* pointer to native method interface */
> //static jobject phone_obj;   // phone object to make JNI calls to PTF
> with
>
> int jni_startJVM();
> int jni_checkException(char* jni_call);
> int jni_startCom();
> };
>
>
Code:
> JNI_Interface::jni_startJVM()
> {
> ...
> jint res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); // error on
> this line
> ...
> }
>
>
> causes this error (error thrown on JNI_CreateJavaVM() call)....
>
> jni.cpp(34) : error C2440: 'type cast' : cannot convert from 'JNIEnv
> *__gc * ' to 'void ** '
> Cannot convert a managed type to an unmanaged type
> jni.cpp(34) : error C2664: 'JNI_CreateJavaVM' : cannot convert
> parameter 1 from 'JavaVM *__gc * ' to 'JavaVM ** '
> Cannot convert a managed type to an unmanaged type
>
> I've tried all sorts of __nogc stuff but it keeps throwing these errors
> on build. Does anybody have any ideas or has anyone else worked w/ JNI
> within managed C++?
>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Access to memory managed by C module over JNI Sune Java 5 09-10-2007 02:37 AM
Using JNI from Managed C++ Chris Uppal Java 0 07-28-2006 08:36 AM
Re: JNI: Error loading DLL from JNI DDL vasanth Java 0 01-25-2005 11:01 AM
Porting JNI Windows under JNI LINUX + Wine ? Pasturel Jean-Louis Java 5 03-03-2004 07:50 PM
IBM's JNI fails where Sun's JNI works Alex Hunsley Java 4 11-04-2003 10:34 AM



Advertisments