我正在嘗試使用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