目前所做java项目中有部分模块需要使用客户提供的dll动态库文件中封装的算法,客户提供了一个dll文件以及C#语言编写的可执行文件实例,算法具体代码未提供。之前只涉及过利用jna调用c++所生成的dll文件,最终的目的则是需要java调用C#生成的dll文件。
本人涉及dll的封装操作不是很久,暂时未能找到java利用jna调用C#生成的dll的更有效方法,于是采用一种变通的方法。
这种方法的思路是:c++项目设置为clr公共运行时,可以通过引用的方法调用C#相应方法,java可以通过jna调用c++生成的dll,所以首先需要将C#的dll封装成c++的dll,再通过jna调用封装好的c++的dll文件。
工具:vs2010
首先,生成C#的dll文件。
客户给的dll文件是直接由C#生成的,如果熟悉这dll文件的内部结构则可直接略过此步骤。因为客户给的dll命名空间不够明确,并且其中有两个相似的类,而每个类下又有功能相同且名称相同的几个方法,为了能够明确调用给定的C#的dll动态库文件中的方法,同时为了c++调用方便,这里是