我有一个任务是使用C++与第三方公司的dll进行交互。如何从C++调用JNI DLL
该DLL包带有:
- DLL本身
- 样品Java实现 - 由一个Java包装(库)的使用SWIG工具和Java源文件
- 文档生成它陈述了所有的公共数据类型,枚举和成员函数。
我的其他同事正在使用Java(基于包中的示例)与dll接口,同时要求我使用C++。 Java的例子看起来简单的...只是进口包装和实例在文档中描述的任何类..上的dll
更多信息:
- 从文档,它说该DLL使用C++编程
- 从一个hexdump,它显示它是使用VC90(VS C++ 2008正确?)和Dinkumware中的东西编译的。
- 从depends.exe输出中,函数似乎被包装在JNI下。例如:
[email protected]
我的困境:
- DLL的公司没有改变的dll任何东西,不提供任何其他信息。
- 如何在dll中使用类中的成员函数?
- 我做了一些简单的LoadLibrary()和GetProcAddress,并设法获取公共成员函数的地址。
- 但我不知道如何使用具有dll中定义的数据类型参数的函数。例如:
从文档,所述成员函数定义为:
空隙服务器::连接(常量字符串数组,常量KeyValueMap)掷(标准:: invalid_argument,性病:: out_of_range)
的typedef的std ::地图服务器:: KeyValueMap
的typedef的std ::向量服务器::字符串数组
我如何调用该函数在C++中。我的编译器(VS 2005)中的std :: map和std :: vector具有不同的函数,列出了dll中的函数。例如,从依赖。exe文件输出:
- 的std ::地图// KeyValueMap - 德尔,空,获取,has_1key,设置
- 的std ::向量//字符串数组 - 加,能力,清晰,得到,为IsEmpty,储备,设置,我应该如何解决这个尺寸
任何意见/策略?有没有可能像Java示例那样简单地实例化类?
这个东西是专有的,还是你可以提供DLL供我们查看? – 2009-08-12 17:36:08