Class DynamicLinkLoader
- java.lang.Object
-
- org.lwjgl.system.macosx.DynamicLinkLoader
-
public class DynamicLinkLoader extends java.lang.ObjectNative bindings to.
-
-
Field Summary
Fields Modifier and Type Field and Description static longRTLD_DEFAULTSpecial-handle values forDynamicLinkLoader.dlsym(long, java.nio.ByteBuffer).static intRTLD_GLOBAL
RTLD_LAZY
RTLD_LOCALThemodeargument toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int)contains one of the following.static longRTLD_MAIN_ONLY
RTLD_NEXTSpecial-handle values forDynamicLinkLoader.dlsym(long, java.nio.ByteBuffer).static intRTLD_NOWThemodeargument toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int)contains one of the following.static longRTLD_SELFSpecial-handle values forDynamicLinkLoader.dlsym(long, java.nio.ByteBuffer).
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static intdlclose(long handle)Closes a dynamic library or bundle.static java.lang.Stringdlerror()Provides diagnostic information corresponding to problems with calls toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int),DynamicLinkLoader.dlsym(long, java.nio.ByteBuffer), andDynamicLinkLoader.dlclose(long)in the same thread.static longdlopen(java.nio.ByteBuffer path, int mode)Loads and links a dynamic library or bundle.static longdlopen(java.lang.CharSequence path, int mode)Loads and links a dynamic library or bundle.static longdlsym(long handle, java.nio.ByteBuffer name)Returns the address of a symbol.static longdlsym(long handle, java.lang.CharSequence name)Returns the address of a symbol.
-
-
-
Field Detail
-
RTLD_LAZY
public static final int RTLD_LAZY
Themodeargument toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int)contains one of the following.- See Also:
- Constant Field Values
-
RTLD_NOW
public static final int RTLD_NOW
Themodeargument toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int)contains one of the following.- See Also:
- Constant Field Values
-
RTLD_LOCAL
public static final int RTLD_LOCAL
Themodeargument toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int)contains one of the following.- See Also:
- Constant Field Values
-
RTLD_GLOBAL
public static final int RTLD_GLOBAL
Themodeargument toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int)contains one of the following.- See Also:
- Constant Field Values
-
RTLD_NEXT
public static final long RTLD_NEXT
Special-handle values forDynamicLinkLoader.dlsym(long, java.nio.ByteBuffer).- See Also:
- Constant Field Values
-
RTLD_DEFAULT
public static final long RTLD_DEFAULT
Special-handle values forDynamicLinkLoader.dlsym(long, java.nio.ByteBuffer).- See Also:
- Constant Field Values
-
RTLD_SELF
public static final long RTLD_SELF
Special-handle values forDynamicLinkLoader.dlsym(long, java.nio.ByteBuffer).- See Also:
- Constant Field Values
-
RTLD_MAIN_ONLY
public static final long RTLD_MAIN_ONLY
Special-handle values forDynamicLinkLoader.dlsym(long, java.nio.ByteBuffer).- See Also:
- Constant Field Values
-
-
Method Detail
-
dlopen
public static long dlopen(java.nio.ByteBuffer path, int mode)Loads and links a dynamic library or bundle.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
dlopento load the same image return the same handle, but the internal reference count for the handle is incremented. Therefore, alldlopencalls must be balanced withDynamicLinkLoader.dlclose(long)calls.For efficiency, the
DynamicLinkLoader.RTLD_LAZYbinding mode is preferred overDynamicLinkLoader.RTLD_NOW. However, usingDynamicLinkLoader.RTLD_NOWensures that any undefined symbols are discovered during the call todlopen.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, andDYLD_FALLBACK_LIBRARY_PATH. The default value ofDYLD_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:
- $LD_LIBRARY_PATH
- $DYLD_LIBRARY_PATH
- The process's working directory
- $DYLD_FALLBACK_LIBRARY_PATH
When path is a pathname, the dynamic loader searches for the library in the search paths in the following order:
- $DYLD_LIBRARY_PATH
- The given pathname
- $DYLD_FALLBACK_LIBRARY_PATH using the filename
- Parameters:
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:
DynamicLinkLoader.RTLD_LAZY(default): Each external symbol reference is bound the first time it's used.DynamicLinkLoader.RTLD_NOW: All external symbol references are bound immediately.
The following values specify external symbol visibility:
DynamicLinkLoader.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 (seeDynamicLinkLoader.dlsym(long, java.nio.ByteBuffer)for details).DynamicLinkLoader.RTLD_LOCAL: The loaded image's exported symbols are generally hidden. They are available only toDynamicLinkLoader.dlsym(long, java.nio.ByteBuffer)invocations that use the handle returned by this function.
-
dlopen
public static long dlopen(java.lang.CharSequence path, int mode)Loads and links a dynamic library or bundle.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
dlopento load the same image return the same handle, but the internal reference count for the handle is incremented. Therefore, alldlopencalls must be balanced withDynamicLinkLoader.dlclose(long)calls.For efficiency, the
DynamicLinkLoader.RTLD_LAZYbinding mode is preferred overDynamicLinkLoader.RTLD_NOW. However, usingDynamicLinkLoader.RTLD_NOWensures that any undefined symbols are discovered during the call todlopen.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, andDYLD_FALLBACK_LIBRARY_PATH. The default value ofDYLD_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:
- $LD_LIBRARY_PATH
- $DYLD_LIBRARY_PATH
- The process's working directory
- $DYLD_FALLBACK_LIBRARY_PATH
When path is a pathname, the dynamic loader searches for the library in the search paths in the following order:
- $DYLD_LIBRARY_PATH
- The given pathname
- $DYLD_FALLBACK_LIBRARY_PATH using the filename
- Parameters:
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:
DynamicLinkLoader.RTLD_LAZY(default): Each external symbol reference is bound the first time it's used.DynamicLinkLoader.RTLD_NOW: All external symbol references are bound immediately.
The following values specify external symbol visibility:
DynamicLinkLoader.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 (seeDynamicLinkLoader.dlsym(long, java.nio.ByteBuffer)for details).DynamicLinkLoader.RTLD_LOCAL: The loaded image's exported symbols are generally hidden. They are available only toDynamicLinkLoader.dlsym(long, java.nio.ByteBuffer)invocations that use the handle returned by this function.
-
dlerror
public static java.lang.String dlerror()
Provides diagnostic information corresponding to problems with calls toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int),DynamicLinkLoader.dlsym(long, java.nio.ByteBuffer), andDynamicLinkLoader.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
dlerrorresets its diagnostic buffer. If a program needs to keep a record of past error messages, it must store them itself. Subsequent calls todlerrorin the same thread with no calls toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int),DynamicLinkLoader.dlsym(long, java.nio.ByteBuffer), orDynamicLinkLoader.dlclose(long), returnNULL.
-
dlsym
public static long dlsym(long handle, java.nio.ByteBuffer name)Returns the address of a symbol.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 dlopenhandleImage associated with the DynamicLinkLoader.dlopen(java.nio.ByteBuffer, int)handle.DynamicLinkLoader.RTLD_DEFAULTEvery dependent library or DynamicLinkLoader.RTLD_GLOBAL–opened library in the current process, in the order they were loaded.DynamicLinkLoader.RTLD_NEXTDependent libraries that were loaded after the one calling this function. Libraries opened with DynamicLinkLoader.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.
- Parameters:
handle- a handle obtained by a call toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int), or a special handle. If the handle was obtained by a call toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int), it must not have been closed with a call toDynamicLinkLoader.dlclose(long). These are the possible special-handle values:DynamicLinkLoader.RTLD_DEFAULT, andDynamicLinkLoader.RTLD_NEXT.name- the null-terminated character string containing the C name of the symbol being sought
-
dlsym
public static long dlsym(long handle, java.lang.CharSequence name)Returns the address of a symbol.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 dlopenhandleImage associated with the DynamicLinkLoader.dlopen(java.nio.ByteBuffer, int)handle.DynamicLinkLoader.RTLD_DEFAULTEvery dependent library or DynamicLinkLoader.RTLD_GLOBAL–opened library in the current process, in the order they were loaded.DynamicLinkLoader.RTLD_NEXTDependent libraries that were loaded after the one calling this function. Libraries opened with DynamicLinkLoader.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.
- Parameters:
handle- a handle obtained by a call toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int), or a special handle. If the handle was obtained by a call toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int), it must not have been closed with a call toDynamicLinkLoader.dlclose(long). These are the possible special-handle values:DynamicLinkLoader.RTLD_DEFAULT, andDynamicLinkLoader.RTLD_NEXT.name- the null-terminated character string containing the C name of the symbol being sought
-
dlclose
public static int dlclose(long handle)
Closes a dynamic library or bundle.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.
- Parameters:
handle- a handle obtained through a call toDynamicLinkLoader.dlopen(java.nio.ByteBuffer, int).
-
-