Well, I easyly found where the changes have to occured (including
modifications of parsing header) and I will explain this when I will update
the isuue.
But before to begin, I want to write a (very) small bundle loading a native
lib.
And that's the problem ... I just can't !!!

So I write a little class HelloWorldNative with a sole native method
printNative() which call a C method compiled into HelloWorldNative.dll
I test my sample out of Felix, and it works fine.

So I bundle it. My activator create an instance of the HelloWorldNative
class.
This contains a static loading of the native library.
I'm sure the library is loaded, cause when it's not present, the error is
quite explicit.
So the loading is OK, but it seems that's the VM checks all methods and
verifies that's a correct implementation exists in the dll.
And there's my bug ... It can't find the corresponding native method !!!
The tracelog :

[...]
DEBUG: WIRE: 4.0 -> org.osgi.framework -> 0
Started.
doWork.
+++ new   <<< new HelloWorldNative() call
+++ loading...   <<< before System.loadLibrary()
DEBUG: R4SearchPolicyCore.findLibrary()...
DEBUG: path: C:\Documents and Settings\Arnaud
Quiblier\.felix\a\bundle4\version0.0\lib\HelloWorldNative.dll   <<< dll's
path is OK
java.lang.UnsatisfiedLinkError: C:\Documents and Settings\Arnaud
Quiblier\.felix\a\bundle4\version0.0\lib\HelloWorldNative.dll: La procédure
spécifiée est introuvable   <<< Sorry it's french ... but this is my problem
=====  trace  =====
   at java.lang.ClassLoader$NativeLibrary.load(Native Method)
   at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1586)
   at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1495)
   at java.lang.Runtime.loadLibrary0(Runtime.java:788)
   at java.lang.System.loadLibrary(System.java:834)
   at HelloWorldNative.<clinit>(HelloWorldNative.java:8)
   at Activator.doWork(Activator.java:26)
   at Activator.start(Activator.java:10)
   at org.apache.felix.framework.Felix._startBundle(Felix.java:1216)
   at org.apache.felix.framework.Felix.startBundle(Felix.java:1149)
   at org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java
:768)
   at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java
:220)
   at java.lang.Thread.run(Thread.java:534)
--- loaded.
--- new
[...]

Any idea is welcome ...

--
</arnaud>

Reply via email to