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]
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 <stoffe(a)gmail.com>
> 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 <stoffe(a)gmail.com>
>> 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 <hyc(a)symas.com> 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/