【问题标题】:Accessing C++ native DLL (with namespaces) through JAVA通过 JAVA 访问 C++ 原生 DLL(带有命名空间)
【发布时间】:2011-03-07 03:53:08
【问题描述】:

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

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

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

【问题讨论】:

    标签: java c++ dll namespaces java-native-interface


    【解决方案1】:

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

    【讨论】:

    • 结构类似于:命名空间>类>静态方法。而且我也确实有 dll 的头文件。//认为这甚至会有所帮助...
    • @Mafahir:静态方法可以正常工作——非静态方法会导致问题。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      “Jeremiah Willcock”的答案是正确的,无论如何,您始终可以访问 D.L.L.函数,在类或命名空间中使用“损坏的名称”,这是一种奇怪而肮脏的做事方式,但是,即使有其他方式,它也可以工作。

      你可以做一些测试,加入这些函数,然后,制作你自己的包装器。

      【讨论】:

        猜你喜欢
        • 2012-10-01
        • 2010-11-22
        • 1970-01-01
        • 2012-05-11
        • 2016-09-15
        • 1970-01-01
        • 2010-12-29
        • 1970-01-01
        相关资源
        最近更新 更多