我想通过JNI从C ++调用方法。为此,我需要使用系统方法System.loadLibrary。
首先,我尝试在localhost上创建它。我遇到了一些问题" UnsatisfiedLinkError:在java.library.path"中找不到DLL。此问题的解决方案是本指南http://adamheinrich.com/blog/2012/how-to-load-native-jni-library-from-jar/中的类NativeUtils。它完全适用于localhost。
但是当我在heroku上部署它时,我有一个错误"无效的ELF标题(可能的原因:字节顺序不匹配)"。
我该如何应对?
答案 0 :(得分:2)
Heroku服务器基于Linux
,而您的DLL
仅适用于Windows。这就是您收到错误的原因,解决方案是创建一个Linux
共享库。我建议配置一个具有Heroku实例所具有的Linux风格的虚拟机,在那里构建你的库,并在你的存储库而不是DLL中使用它。
编辑:我发现了一篇可能有助于您直接在Heroku实例上编译库的文章:http://www.saintsjd.com/2014/05/12/run-vendored-binaries-on-heroku.html