访问 C++通过 JAVA 的本机 DLL(带有命名空间)

发布于 2024-10-20 14:50:31 字数 158 浏览 2 评论 0原文

我有一个 C++ DLL,其中的函数嵌套在命名空间内。

我需要在java中访问这些函数..我不是一个java专家,但我确实知道一些它的基础知识。

我找到了使用 JNI 访问 C++ 本机 DLL 中的方法的基本 java 代码,但我不确定如何访问嵌套在命名空间中的函数。

I have a c++ DLL where the functions are nested within namespaces.

I need to access these functions in java.. i'm not much of a java expert but i do know a little of its basics.

I found basic java codes to access methods in C++ native DLL using JNI but im not sure how to access the functions nested within namespaces.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

七度光 2024-10-27 14:50:31

您可能需要获取 C++ 函数的损坏名称。您可以在 Unix 上使用 nm 来执行此操作,或者在 Windows 上使用 dumpbin /exports 来执行此操作。重整后的名称将具有命名空间和函数名称,因此应该很容易找到(除非有多个重载具有相同的名称,您需要区分)。您确定这些函数是普通的 C++ 函数而不是类方法吗?

You will probably need to get the mangled names of the C++ functions. You can use nm to do that on Unix or dumpbin /exports on Windows. The mangled name will have the namespace and function name, so it should be easy to find (unless there are several overloads with the same name that you need to distinguish). Are you sure the functions are normal C++ functions and not class methods?

陈甜 2024-10-27 14:50:31

帮自己一个忙:使用 BridJ 进行 C++ 互操作,它应该能够处理大多数命名空间问题:-)

(免责声明:我是 BridJ 的作者)

Do yourself a favour : use BridJ for C++ interop, it should be able to deal with most namespace issues :-)

(disclaimer : I'm BridJ's author)

初熏 2024-10-27 14:50:31

“Jeremiah Willcock”的答案是正确的,无论如何,你总是可以使用“损坏的名称”在类或命名空间内访问 DLL 函数,这是一种奇怪、肮脏的做事方式,但是,它的工作原理,即使有其他方法方式。

您可以做一些测试,访问这些功能,然后制作您自己的包装器。

"Jeremiah Willcock" answer is right, in any case, you can always access a D.L.L. functions, inside classes or namespaces using "mangled names", its the weird, dirty way of doing things, but, its works, even if there are other ways.

You could do some tests, accesign those functions, and later, make your own wrapper.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文