【发布时间】:2011-03-07 03:53:08
【问题描述】:
我有一个 c++ DLL,其中的函数嵌套在命名空间中。
我需要在 java 中访问这些函数。我不是 java 专家,但我知道一点它的基础知识。
我找到了基本的 java 代码,可以使用 JNI 访问 C++ 本机 DLL 中的方法,但我不确定如何访问嵌套在命名空间中的函数。
【问题讨论】:
标签: java c++ dll namespaces java-native-interface
我有一个 c++ DLL,其中的函数嵌套在命名空间中。
我需要在 java 中访问这些函数。我不是 java 专家,但我知道一点它的基础知识。
我找到了基本的 java 代码,可以使用 JNI 访问 C++ 本机 DLL 中的方法,但我不确定如何访问嵌套在命名空间中的函数。
【问题讨论】:
标签: java c++ dll namespaces java-native-interface
您可能需要获取 C++ 函数的错位名称。您可以在 Unix 上使用 nm 或在 Windows 上使用 dumpbin /exports 来执行此操作。损坏的名称将具有命名空间和函数名称,因此应该很容易找到(除非您需要区分多个具有相同名称的重载)。您确定这些函数是普通的 C++ 函数而不是类方法吗?
【讨论】:
帮自己一个忙:使用 BridJ 进行 C++ 互操作,它应该能够处理大多数命名空间问题 :-)
(免责声明:我是 BridJ 的作者)
【讨论】:
“Jeremiah Willcock”的答案是正确的,无论如何,您始终可以访问 D.L.L.函数,在类或命名空间中使用“损坏的名称”,这是一种奇怪而肮脏的做事方式,但是,即使有其他方式,它也可以工作。
你可以做一些测试,加入这些函数,然后,制作你自己的包装器。
【讨论】: