BridJ 0.4.1 released (r1990): many callbacks fixes, better windows APIs support, enhanced C++ templates...
BridJ is an innovative native bindings library that lets Java programmers use native libraries (written in C, C++, ObjectiveC and more) in a very natural way (inspired by the great JNA, with better performance, C++ and generics added).
Here are the changes since version 0.4 (see full change log here) :
- Fixed callbacks on Windows x86
- Fixed multithreaded callbacks ! (callbacks called in a different thread than the one that created them used to hang indefinitely)
- Fixed Pointer and ValuedEnum arguments and return values in callbacks
- Fixed loading of libraries that depend on other libraries in the same directory on Windows (issue #65)
- Fixed BridJ.sizeOf(Pointer.class), sizeOf(SizeT.class), sizeOf(CLong.class)…
- Enhanced C++ templates support
- Added support for Windows APIs Unicode vs. ANSI functions renaming (e.g. SendMessage being one of SendMessageW or SendMessageA, depending on Platform.useUnicodeVersionOfWindowsAPIs)
- Added deprecated support for struct fields implemented as Java fields, to ease up migration from JNA (needs manual calls to BridJ.writeToNative(struct) and BridJ.readFromNative(struct)) (issue #54)
- Added preliminary read-only support for STL’s std::vector
C++ type - Added BridJ.describe(Type) to describe structs layouts (automatically logged for each struct type when BRIDJ_DEBUG=1 or -Dbridj.debug=true)
- Added BridJ.describe(NativeObject).
- Added StructObject.toString() (calls BridJ.describe(this))
- Added BRIDJ_DEBUG_POINTERS=1 (or -Dbridj.debug.pointers=true) to display extended pointer allocation / deallocation debug information
- Reorganized Windows COM packages (moved out DirectX code to it own top-level project : com.nativelibs4java:directx4java)
- Implemented FlagSet.equals
Special thanks to Andrei Sochirca for this release : couldn’t have made it without his patient and tireless testing and bugs reporting.
Anyone can contribute to the project by reporting bugs here).
Now what ?
- Download Bridj’s binaries : works on Windows (x86/x64), Linux (x86/x64), MacOS X (universal) and Solaris (x86)
- Generate BridJ wrappers for your library using JNAerator (just select “BridJ” in the “Runtime” combobox).
- Read some documentation :
- The FAQ might save your life
- BridJ API Javadoc :
- BridJ Development API (direct link : Pointer class)
- BridJ Stable API (0.4.1) (direct link : Pointer class) FYI Pointer is probably the most important class to look at, the only other classes you need to know about are the ones created by JNAerator.
- Join the NativeLibs4Java Google Group to share your questions and remarks with the community !