1.java通过maven安装JNA。通过JNA调用dll。
java端调用dll的样例如下:
package com.phm.jna;
import com.sun.jna.Library;
import com.sun.jna.Native;
public class Test001 {
public interface DealSqlForJava extends Library{
DealSqlForJava INTERFACE =Native.load("DealSqlForJava",DealSqlForJava.class);
int TestOutput();
}
public static void main(String[] args) {
int i = DealSqlForJava.INTERFACE.TestOutput();
System.out.println(i);
}
}
qt端样例代码:
DealSqlForJava.h
#if defined(DEALSQLFORJAVA_LIBRARY)
# define DEALSQLFORJAVASHARED_EXPORT Q_DECL_EXPORT
#else
# define DEALSQLFORJAVASHARED_EXPORT Q_DECL_IMPORT
#endif
extern "C" {
DEALSQLFORJAVASHARED_EXPORT int TestOutput(); //测试调用成功,结果返回1
}
DealSqlForJava.cpp
int TestOutput()
{
return 1;
}
报错注意:
1.如果报“找不到指定模块”,则在idea的pom.xml中加入:
<dependency>
<groupId>com.quantxt.core</groupId>
<artifactId>qt-core</artifactId>
<version>2.59</version>
</dependency>
注意要点:
1.qt写的代码头文件中必须加extern "C"和Q_DECL_EXPORT,不然java识别不出函数名。
2.java端只需要一个dll文件就行,不需要头文件。