On 15-02-2011 18:35, Ian Shef wrote:
> Arne Vajhøj<> wrote in news:4d580572$0$23756$14726298
> @news.sunsite.dk:
>
>> On 13-02-2011 03:42, dvir shaty wrote:
>>> I am trying to load a function from a 3rd party DLL from my java code
>>> (in eclipse).
>>>
>>> Can you please tell me how to do it?
>>>
>>> I tried to use the following:
>>>
>>> ------------------------------------------------
>>> package tal.packege;
>>> class talclient
>>> {
>>> static
>>> {
>>> System.loadLibrary("talclient");
>>> }
>>> public static void main(String ar[])
>>> {
>>> System.out.println("Hello world from Java");
>>> talclient t=new talclient();
>>> String s = "172.16.10.31";
>>> int a = 8888;
>>> int b = 0;
>>> t.tal_connect(s,a,b);
>>>
>>> }
>>> public native void tal_connect(String s, int a, int b);
>>> }
>>>
>>> ------------------------------------------------
>>>
>>>
>>> I get the following exception:
>>>
>>>
>>> Exception in thread "main" java.lang.UnsatisfiedLinkError:
>>> tal.packege.talclient.vtc_connect(Ljava/lang/String;II)V
>>> at tal.packege.talclient.vtc_connect(Native Method)
>>> at tal.packege.talclient.main(talclient.java:16)
>>>
>>> According to the dll help file the arguments are defined as:
>>>
>>> int tal_connect( char *servername,
>>> Int portnum,
>>> Int options)
>>>
>>> The dll is stored in c:\windows\system32.
>>
>> JNI does not support calling arbitrary functions in a
>> DLL.
>>
>> You need to create wrapper function and DLL that is
>> JNI compatible and call that.
> And furthermore...
> - Your code calls tal_connect, but the error message is for vtc_connect.
> - char * is NOT the same as java.lang.String
Both will somewhat become obvious when creating the
JNI wrapper.
The output from javah will show a lot.
Arne
|