C++BUILDER6做成的DLL让JAVA调用,为何函数名都要加下划线?
C++BUILDER6做DLL非常简单,生成的DLL让C++BUILDER程序调用也很简单,调用DLL函数名时并不需要加下划线,
但JAVA用JNA调用此DLL就成严重问题了,搞了两天,幸有一位网友用DLL查看工具才邦我发现我做
成的DLL函数名都有下划线,这才解决了我的大问题。
为何C++BUILDER自已调用此DLL不需下划线,而JAVA调用就必须要下划线呢,
C++BUILDER调用的函数
#define CDLL extern "C" __declspec( dllimport )
CDLL bool openHFV(); // 1
CDLL void closeHFV(); // 2
CDLL int readHFV(); //3
JAVA调用的源码
import com.sun.jna.Library;
import com.sun.jna.Native;
public class testdll {
public interface DLL extends Library
{
DLL dll = (DLL)Native.loadLibrary("usbvein.dll",DLL.class);
boolean _openHFV(); // 1号函数声明
void _closeHFV(); // 2
int _readHFV(); // 3 }
public static void main(String[] args) //主程序
{
DLL.dll._openHFV(); // 打开USB 设备
DLL.dll._readHFV(); // 启动USB
DLL.dll._closeHFV(); // 关闭USB指静脉设备
}
}