I can see the problem now from a local test. Hmm i'm a bit confused. The JNI code uses GetStringUTFChars calls [1] for all char * arguments going from Java to C, which is an array of bytes representing the string in modified UTF-8 encoding. Is this OK? The other option is to use GetStringChars which is unicode...
[1] http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html On Thu, Nov 19, 2015 at 10:32 PM, Howard Chu <[email protected]> wrote: > Kristoffer Sjögren wrote: >> >> The py-lmdb project have a comment [1] about reusing Python.h headers >> which seems to work for them. >> >> # Microsoft Visual Studio 9 ships with neither inttypes.h, stdint.h, or a >> sane >> # definition for ssize_t, so here we add lib/win32 to the search path, >> which >> # contains emulation header files provided by a third party. We >> force-include >> # Python.h everywhere since it has a portable definition of ssize_t, which >> # inttypes.h and stdint.h lack, and to avoid having to modify the LMDB >> source >> # code. Advapi32 is needed for LMDB's use of Windows security APIs. > > > Note in ITS#8067 we added an ssize_t typedef for MSVC. Also in #8069 we > changed to explicitly use the ANSI APIs, so if you're using Unicode file > paths that will certainly be garbled now. > >> >> [1] https://github.com/dw/py-lmdb/blob/master/setup.py >> >> On Thu, Nov 19, 2015 at 10:13 PM, Kristoffer Sjögren <[email protected]> >> wrote: >>> >>> The actual build command: >>> >>> $ cmd.exe /X /C "vcbuild /platform:x64 vs2008.vcproj release" >>> >>> On Thu, Nov 19, 2015 at 10:11 PM, Kristoffer Sjögren <[email protected]> >>> wrote: >>>> >>>> That's the thing, the build doesn't complain about anything missing. >>>> But the binary seems broken because tests fail randomly. >>>> >>>> A user tried the generated binary on his machine and it worked but also >>>> said... >>>> >>>> "Hm, almost, the database file is no longer put to the requested >>>> directory, and its name is totally garbled. It finds it consistently >>>> though, and the contents are correct." >>>> >>>> https://github.com/deephacks/lmdbjni/issues/48 >>>> >>>> On Thu, Nov 19, 2015 at 9:57 PM, Howard Chu <[email protected]> wrote: >>>>> >>>>> Kristoffer Sjögren wrote: >>>>>> >>>>>> >>>>>> Hi >>>>>> >>>>>> I'm trying to build LMDB with Java/JNI bindings with Visual C++ >>>>>> Project Builder 9.00.30729 (vcbuild). >>>>>> >>>>>> Unfortunately, vcbuild don't ship with inttypes.h, stdint.h, or a sane >>>>>> ssize_t. So I searched around and found a few candidates [1] of >>>>>> inttypes.h and stdint.h that seems to be working for py-lmdb. >>>>>> >>>>>> However, unistd.h seems broken for windows - and the python guys use >>>>>> python.h instead. >>>>>> >>>>>> Any ideas where I might find a good unistd.h? >>>>> >>>>> >>>>> >>>>> I see you have one already - what is wrong with it, what definitions >>>>> are >>>>> missing? >>>>> >>>>>> >>>>>> Cheers, >>>>>> -Kristoffer >>>>>> >>>>>> >>>>>> [1] >>>>>> https://github.com/deephacks/lmdbjni/tree/master/lmdbjni-win64/headers >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> -- Howard Chu >>>>> CTO, Symas Corp. http://www.symas.com >>>>> Director, Highland Sun http://highlandsun.com/hyc/ >>>>> Chief Architect, OpenLDAP http://www.openldap.org/project/ >> >> > > > -- > -- Howard Chu > CTO, Symas Corp. http://www.symas.com > Director, Highland Sun http://highlandsun.com/hyc/ > Chief Architect, OpenLDAP http://www.openldap.org/project/
