我正在尝试使用visual studio创建一个dll文件,并在Java项目中使用/访问它。该库似乎被加载,但总是抛出相同的异常: 线程“main”中的异常java.lang.UnsatisfiedLinkError:查找函数'function'时出错:无法找到指定的过程。我的C/C++技能并不是最好的,所以问题可能在那里。我试图编辑h和cpp文件,使用类,名称空间,静态方法和网上找到的其他工作人员,但没有做任何事情。 我也看过其他文章谈论Depency Walker工具,但它无法打开我的dll,我也看到编译器为函数名添加了一些奇怪的后缀,因为我知道可以通过使用“ estern'C'“在h或cpp文件中,但我无法使用。Java + JNA:找不到指定的程序
我的界面:
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface SimpleDll extends Library {
SimpleDll instance = (SimpleDll) Native.loadLibrary("SimpleDll", SimpleDll.class);
void function();
}
我的主类:
public class Test_Dll {
public static void main(String[] args) {
SimpleDll simpleDll = SimpleDll.instance;
simpleDll.function();
}
}
我的.h文件:
#ifndef SIMPLEDLL
#define SIMPLEDLL
namespace simpeDll{
static void function();
}
#endif
我的CPP文件:
#include "stdafx.h"
#include "simpleDll.h"
#include <stdexcept>
using namespace simpeDll;
static void function(){
}
你有没有尝试声明你的函数为extern“C”静态void函数();在命名空间simpleDll之外? – 2013-03-13 23:36:22
是的,我也试过没有命名空间。我想在Visual Studio中有一个设置问题,因为我发现我创建的库是空的。我发现另一个工具来打开DLL,而令人惊讶的是,里面没有函数。 – Emaborsa 2013-03-14 07:44:24