public class DynamicLinkLoader
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
static long |
RTLD_DEFAULT
Special-handle values for
dlsym(long, java.nio.ByteBuffer). |
static int |
RTLD_GLOBAL
The
mode argument to dlopen(java.nio.ByteBuffer, int) contains one of the following. |
static int |
RTLD_LAZY
The
mode argument to dlopen(java.nio.ByteBuffer, int) contains one of the following. |
static int |
RTLD_LOCAL
The
mode argument to dlopen(java.nio.ByteBuffer, int) contains one of the following. |
static long |
RTLD_MAIN_ONLY
Special-handle values for
dlsym(long, java.nio.ByteBuffer). |
static long |
RTLD_NEXT
Special-handle values for
dlsym(long, java.nio.ByteBuffer). |
static int |
RTLD_NOW
The
mode argument to dlopen(java.nio.ByteBuffer, int) contains one of the following. |
static long |
RTLD_SELF
Special-handle values for
dlsym(long, java.nio.ByteBuffer). |
| Modifier and Type | Method and Description |
|---|---|
static int |
dlclose(long handle)
Closes a dynamic library or bundle.
|
static java.lang.String |
dlerror()
Provides diagnostic information corresponding to problems with calls to
dlopen(java.nio.ByteBuffer, int), dlsym(long, java.nio.ByteBuffer), and dlclose(long) in the same thread. |
static long |
dlopen(java.nio.ByteBuffer path,
int mode)
Loads and links a dynamic library or bundle.
|
static long |
dlopen(java.lang.CharSequence path,
int mode)
Loads and links a dynamic library or bundle.
|
static long |
dlsym(long handle,
java.nio.ByteBuffer name)
Returns the address of a symbol.
|
static long |
dlsym(long handle,
java.lang.CharSequence name)
Returns the address of a symbol.
|
static int |
ndlclose(long handle)
Unsafe version of:
dlclose(long) |
static long |
ndlerror()
Unsafe version of:
dlerror() |
static long |
ndlopen(long path,
int mode)
Unsafe version of:
dlopen(java.nio.ByteBuffer, int) |
static long |
ndlsym(long handle,
long name)
Unsafe version of:
dlsym(long, java.nio.ByteBuffer) |
public static final int RTLD_LAZY
mode argument to dlopen(java.nio.ByteBuffer, int) contains one of the following.public static final int RTLD_NOW
mode argument to dlopen(java.nio.ByteBuffer, int) contains one of the following.public static final int RTLD_LOCAL
mode argument to dlopen(java.nio.ByteBuffer, int) contains one of the following.public static final int RTLD_GLOBAL
mode argument to dlopen(java.nio.ByteBuffer, int) contains one of the following.public static final long RTLD_NEXT
dlsym(long, java.nio.ByteBuffer).public static final long RTLD_DEFAULT
dlsym(long, java.nio.ByteBuffer).public static final long RTLD_SELF
dlsym(long, java.nio.ByteBuffer).public static final long RTLD_MAIN_ONLY
dlsym(long, java.nio.ByteBuffer).public static long ndlopen(long path,
int mode)
dlopen(java.nio.ByteBuffer, int)public static long dlopen(@Nullable
java.nio.ByteBuffer path,
int mode)
This function examines the Mach-O file specified by path. If the image is compatible with the current process and has not already been loaded into the process, the image is loaded and linked. If the image contains initializer functions, they are executed before this function returns.
Subsequent calls to dlopen to load the same image return the same handle, but the internal reference count for the handle is incremented.
Therefore, all dlopen calls must be balanced with dlclose(long) calls.
For efficiency, the RTLD_LAZY binding mode is preferred over RTLD_NOW. However, using RTLD_NOW ensures that any undefined
symbols are discovered during the call to dlopen.
The dynamic loader looks in the paths specified by a set of environment variables, and in the process's current directory, when it searches for a
library. These paths are called dynamic loader search paths. The environment variables are LD_LIBRARY_PATH, DYLD_LIBRARY_PATH, and
DYLD_FALLBACK_LIBRARY_PATH. The default value of DYLD_FALLBACK_LIBRARY_PATH (used when this variable is not set), is
$HOME/lib;/usr/local/lib;/usr/lib.
The order in which the search paths are searched depends on whether path is a filename (it does not contain a slash) or a pathname (it contains at least one slash).
When path is a filename, the dynamic loader searches for the library in the search paths in the following order:
When path is a pathname, the dynamic loader searches for the library in the search paths in the following order:
path - path to the image to openmode - specifies when the loaded image's external symbols are bound to their definitions in dependent libraries (lazy or at load time) and the visibility
of the image's exported symbols (global or local). The value of this parameter is made up by ORing one binding behavior value with one visibility
specification value.
The following values specify the binding behavior:
RTLD_LAZY (default): Each external symbol reference is bound the first time it's used.RTLD_NOW: All external symbol references are bound immediately.The following values specify external symbol visibility:
RTLD_GLOBAL (default): The loaded image's exported symbols are available to any images that use a flat namespace or to calls to
dlsym when using a special handle (see dlsym(long, java.nio.ByteBuffer) for details).RTLD_LOCAL: The loaded image's exported symbols are generally hidden. They are available only to dlsym(long, java.nio.ByteBuffer) invocations that
use the handle returned by this function.public static long dlopen(@Nullable
java.lang.CharSequence path,
int mode)
This function examines the Mach-O file specified by path. If the image is compatible with the current process and has not already been loaded into the process, the image is loaded and linked. If the image contains initializer functions, they are executed before this function returns.
Subsequent calls to dlopen to load the same image return the same handle, but the internal reference count for the handle is incremented.
Therefore, all dlopen calls must be balanced with dlclose(long) calls.
For efficiency, the RTLD_LAZY binding mode is preferred over RTLD_NOW. However, using RTLD_NOW ensures that any undefined
symbols are discovered during the call to dlopen.
The dynamic loader looks in the paths specified by a set of environment variables, and in the process's current directory, when it searches for a
library. These paths are called dynamic loader search paths. The environment variables are LD_LIBRARY_PATH, DYLD_LIBRARY_PATH, and
DYLD_FALLBACK_LIBRARY_PATH. The default value of DYLD_FALLBACK_LIBRARY_PATH (used when this variable is not set), is
$HOME/lib;/usr/local/lib;/usr/lib.
The order in which the search paths are searched depends on whether path is a filename (it does not contain a slash) or a pathname (it contains at least one slash).
When path is a filename, the dynamic loader searches for the library in the search paths in the following order:
When path is a pathname, the dynamic loader searches for the library in the search paths in the following order:
path - path to the image to openmode - specifies when the loaded image's external symbols are bound to their definitions in dependent libraries (lazy or at load time) and the visibility
of the image's exported symbols (global or local). The value of this parameter is made up by ORing one binding behavior value with one visibility
specification value.
The following values specify the binding behavior:
RTLD_LAZY (default): Each external symbol reference is bound the first time it's used.RTLD_NOW: All external symbol references are bound immediately.The following values specify external symbol visibility:
RTLD_GLOBAL (default): The loaded image's exported symbols are available to any images that use a flat namespace or to calls to
dlsym when using a special handle (see dlsym(long, java.nio.ByteBuffer) for details).RTLD_LOCAL: The loaded image's exported symbols are generally hidden. They are available only to dlsym(long, java.nio.ByteBuffer) invocations that
use the handle returned by this function.public static long ndlerror()
dlerror()@Nullable public static java.lang.String dlerror()
dlopen(java.nio.ByteBuffer, int), dlsym(long, java.nio.ByteBuffer), and dlclose(long) in the same thread.
When there's a problem to report, this function returns a pointer to a null-terminated string describing the problem. Otherwise, this function returns
NULL.
Each call to dlerror resets its diagnostic buffer. If a program needs to keep a record of past error messages, it must store them itself.
Subsequent calls to dlerror in the same thread with no calls to dlopen(java.nio.ByteBuffer, int), dlsym(long, java.nio.ByteBuffer), or dlclose(long), return NULL.
public static long ndlsym(long handle,
long name)
dlsym(long, java.nio.ByteBuffer)public static long dlsym(long handle,
java.nio.ByteBuffer name)
The value of handle specifies what images this function searches for to locate the symbol specified by the symbol parameter. The following table describes the possible values for the handle parameter:
| Handle value | Search scope |
|---|---|
dlopen handle | Image associated with the dlopen(java.nio.ByteBuffer, int) handle. |
RTLD_DEFAULT | Every dependent library or RTLD_GLOBAL–opened library in the current process, in the order they were loaded. |
RTLD_NEXT | Dependent libraries that were loaded after the one calling this function. Libraries opened with dlopen(java.nio.ByteBuffer, int) are not searched. |
Unlike in the NS... functions, the symbol parameter doesn't require a leading underscore to be part of the symbol name.
handle - a handle obtained by a call to dlopen(java.nio.ByteBuffer, int), or a special handle. If the handle was obtained by a call to dlopen(java.nio.ByteBuffer, int), it must not have been
closed with a call to dlclose(long). These are the possible special-handle values: RTLD_DEFAULT, and RTLD_NEXT.name - the null-terminated character string containing the C name of the symbol being soughtpublic static long dlsym(long handle,
java.lang.CharSequence name)
The value of handle specifies what images this function searches for to locate the symbol specified by the symbol parameter. The following table describes the possible values for the handle parameter:
| Handle value | Search scope |
|---|---|
dlopen handle | Image associated with the dlopen(java.nio.ByteBuffer, int) handle. |
RTLD_DEFAULT | Every dependent library or RTLD_GLOBAL–opened library in the current process, in the order they were loaded. |
RTLD_NEXT | Dependent libraries that were loaded after the one calling this function. Libraries opened with dlopen(java.nio.ByteBuffer, int) are not searched. |
Unlike in the NS... functions, the symbol parameter doesn't require a leading underscore to be part of the symbol name.
handle - a handle obtained by a call to dlopen(java.nio.ByteBuffer, int), or a special handle. If the handle was obtained by a call to dlopen(java.nio.ByteBuffer, int), it must not have been
closed with a call to dlclose(long). These are the possible special-handle values: RTLD_DEFAULT, and RTLD_NEXT.name - the null-terminated character string containing the C name of the symbol being soughtpublic static int ndlclose(long handle)
dlclose(long)public static int dlclose(long handle)
This function decreases the reference count of the image referenced by handle. When the reference count for handle becomes 0, the termination routines in the image are called, and the image is removed from the address space of the current process. After that point, handle is rendered invalid.
handle - a handle obtained through a call to dlopen(java.nio.ByteBuffer, int).Copyright LWJGL. All Rights Reserved. License terms.