Hi Arne,
Thanks! My solution which is similar to yours works!
My solution is:
1. java (JNI) C++ Win32 DLL using LoadLibrary(), GetProcAddress() to call 2.
2. CLR DLL which export extern "C" function API to call 3.
3. Actual .Net DLL in question.
It works by calling as a standalone java class.
Next, what I need is to call functions in this class from a TOMCAT
environment. This fails with unknown reason.
I realised that if I remov the "Actual .NET" function call in the CLR
DLL in step 2. with some dummy data, there is no problem in the Tomcat
environment.
It just beats me that why as a standalone Java class it works but not in
a Tomcat environment.
1. Could it be some security issue?
2. or path problem?
All Dlls are in C:/windows/system32
An excerpt from the error logs:
#
# An unexpected error has been detected by Java Runtime Environment:
#
# Internal Error (0xe0434f4d), pid=508, tid=3964
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0_01-b06 mixed mode, sharing)
# Problematic frame:
# C [kernel32.dll+0x12a5b]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x03704c00): JavaThread "http-8081-1" daemon
[_thread_in_native, id=3964]
siginfo: ExceptionCode=0xe0434f4d, ExceptionInformation=0x80070002
Registers:
EAX=0x04e4eb3c, EBX=0x00083a60, ECX=0x00000000, EDX=0x00000025
ESP=0x04e4eb38, EBP=0x04e4eb8c, ESI=0x04e4ebc8, EDI=0xe0434f4d
EIP=0x7c812a5b, EFLAGS=0x00000202
Blah blah blah.....
>> How does one get a Java application (JNI) to call functions in
>> this .NET DLL?
[quoted text clipped - 19 lines]
>
> Arne
Arne Vajhøj - 09 Jun 2007 19:15 GMT
> My solution is:
>
[quoted text clipped - 11 lines]
> DLL in step 2. with some dummy data, there is no problem in the Tomcat
> environment.
What does the actual implementation do ?
> It just beats me that why as a standalone Java class it works but not in
> a Tomcat environment.
[quoted text clipped - 30 lines]
> EIP=0x7c812a5b, EFLAGS=0x00000202
> Blah blah blah.....
Arne
Tan Choong Leong - 11 Jun 2007 02:28 GMT
Hi Arne,
The actual .NET dll is actually a driver provided by a third party
vendor that can communicate with a device using socket (TCP/IP). I do
not have the source code of this driver or knows the protocol of this
device. I just have some function call definition (by looking at the dll
from the object browser) and some sample code.
Regards,
Choong Leong
>> My solution is:
>>
[quoted text clipped - 50 lines]
>
> Arne