我在Java中通过JNI使用一些C ++代码。 C ++代码使用libstdc ++和libz中的一些函数。 C ++部分链接到一个共享库,而不是在不同的环境中使用该构建的库(基于Linux)。
我关心的是libstdc ++和libz版本的差异。如果我在环境A上构建了那个JNI库,而不是它可能有其他libstdc ++和libz版本的环境B和C - 它会失败吗?这是否意味着我需要静态地将这些库链接到我的JNI共享库?
P.S。 2个稍微不同的环境的第一次测试成功了,但我仍然感觉不安全。
答案 0 :(得分:2)
这与C ++的非JNI使用没有什么不同。通常,库提供商努力确保向后兼容性 - 因此在大多数情况下,您的担心不是偶然发现太旧的版本。
有几种常见的选择: