Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / July 2006

Tip: Looking for answers? Try searching our database.

Using JNI from Managed C++

Thread view: 
dorkrawk@gmail.com - 27 Jul 2006 19:13 GMT
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]
[code]
JNI_Interface::jni_startJVM()
{
...
jint res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); // error on
this line
...
}
[/code]

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++?
Chris Uppal - 28 Jul 2006 09:29 GMT
> 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
Vitaly - 30 Jul 2006 15:15 GMT
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++.

> 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
[quoted text clipped - 35 lines]
> on build.  Does anybody have any ideas or has anyone else worked w/ JNI
> within managed C++?


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.