P
Philipp Kraus
Hello,
I use System.loadLibrary to load a shared DLL. This DLL requires other
depended DLLs. If all (under OSX DYLD_LIBRARY_PATH) is configurated the
System.loadLibrary loads my DLL and everything works fine. I have
tested the same code with the DYLD-Option is not set, so my Java code
should be break.
I would like to set the Path to the library like this code:
String[] l_libraries = { "boost_system", "mylib" };
try {
for( String i : l_libraries )
System.loadLibrary(i);
} catch (UnsatisfiedLinkError e_link1) {
File l_temp = new File(
System.getProperty("java.io.tmpdir") + "mytemp" );
if (!l_temp.isDirectory())
l_temp.mkdirs();
for( String i : l_libraries ) {
String l_lib = l_temp +
System.getProperty("file.separator") + System.mapLibraryName(i);
if
(System.getProperty("os.name").toLowerCase().indexOf("mac") >= 0)
l_lib = l_lib.substring(0,
l_lib.indexOf(".jnilib")) + ".dylib";
System.load(l_lib);
}
}
My target is: try to load the library and the depended from the default
system pathes, if not exists than load the libs from
a temporary path. mylib needs a depend boost library, so I load the
boost lib first, but I get the error:
Library not loaded: libboost_system.dylib Referenced from:
/mytemp/mylib.dylib Reason: image not found
Does anybody know a tip to load all libraries first, so the Java VM can
work with them from a "fixed" path?
Thanks
Phil
I use System.loadLibrary to load a shared DLL. This DLL requires other
depended DLLs. If all (under OSX DYLD_LIBRARY_PATH) is configurated the
System.loadLibrary loads my DLL and everything works fine. I have
tested the same code with the DYLD-Option is not set, so my Java code
should be break.
I would like to set the Path to the library like this code:
String[] l_libraries = { "boost_system", "mylib" };
try {
for( String i : l_libraries )
System.loadLibrary(i);
} catch (UnsatisfiedLinkError e_link1) {
File l_temp = new File(
System.getProperty("java.io.tmpdir") + "mytemp" );
if (!l_temp.isDirectory())
l_temp.mkdirs();
for( String i : l_libraries ) {
String l_lib = l_temp +
System.getProperty("file.separator") + System.mapLibraryName(i);
if
(System.getProperty("os.name").toLowerCase().indexOf("mac") >= 0)
l_lib = l_lib.substring(0,
l_lib.indexOf(".jnilib")) + ".dylib";
System.load(l_lib);
}
}
My target is: try to load the library and the depended from the default
system pathes, if not exists than load the libs from
a temporary path. mylib needs a depend boost library, so I load the
boost lib first, but I get the error:
Library not loaded: libboost_system.dylib Referenced from:
/mytemp/mylib.dylib Reason: image not found
Does anybody know a tip to load all libraries first, so the Java VM can
work with them from a "fixed" path?
Thanks
Phil