def find_library(name): # this fallback is good enough ;-) try: library = NativeLibrary.getInstance(name) except UnsatisfiedLinkError: return None return library.file.path
try: # jip install net.java.dev.jna:jna:X.Y.Z --> javalib/jna*.jar # java -jar ivy.jar -dependency net.java.dev.jna jna '[X.Y,)' -types jar -retrieve 'javalib/[artifact]-[revision](-[classifier]).[ext]' sys.path.extend(glob.glob('javalib/jna*.jar')) from com.sun.jna import NativeLibrary except Exception as exc: raise Exception( 'Possibly missing javalib/jna*.jar -- check javalib directory.\n' + repr(exc)) __all__ = ['fact_i', 'fact_lp', 'expt_i', 'expt_lp'] MODULE_LOGGER = logging.getLogger(__name__) ffi_jna = NativeLibrary.getInstance('intro_c-practice') _fact_i = ffi_jna.getFunction('fact_i') _fact_lp = ffi_jna.getFunction('fact_lp') _expt_i = ffi_jna.getFunction('expt_i') _expt_lp = ffi_jna.getFunction('expt_lp') def fact_i(num): func_name = inspect.stack()[0][3] MODULE_LOGGER.info(func_name + '()') return _fact_i.invoke(JLong, jarray.array([num], JLong)) def fact_lp(num):
def __init__(self, libname): self._lib = NativeLibrary.getInstance(libname)