2011-03-07 44 views
0

我有一个C++ DLL,其中的函数嵌套在名称空间中。通过JAVA访问C++本机DLL(带名称空间)

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

我发现了基本的Java代码来访问使用JNI的C++本机DLL中的方法,但我不知道如何访问嵌套在命名空间中的函数。

回答

1

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

+0

该结构类似于: 名称空间>类>静态方法。 而我也有dll的头文件..//思维会甚至帮助... – 2011-03-07 04:04:48

+0

@Mafahir:静态方法将工作得很好 - 它是非静态的,将导致问题。 – 2011-03-07 04:05:31

1

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

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

+0

你不应该真的透露你是该图书馆的作者吗? – b3bop 2012-01-09 16:52:54

+0

hehe,你是对的,我应该:编辑:-) – zOlive 2012-01-10 11:38:58

0

“耶利米Willcock”答案是正确的,无论如何,你总是可以访问一个DLL函数,内部类或命名空间使用“mangled名称”,它是奇怪的,肮脏的做事方式,但它的作品,即使有其他方式。

你可以做一些测试,accesign这些功能,以后,做你自己的包装。