Visual Studioを使用してdllファイルを作成し、Javaプロジェクトで使用/アクセスしようとしています。ライブラリがロードされているようですが、常に同じ例外がスローされます。スレッド "main"の例外java.lang.UnsatisfiedLinkError:関数'function'の検索中にエラーが発生しました:指定されたプロシージャが見つかりませんでした。私のC/C ++スキルは最高ではないので、問題が発生する可能性があります。クラス、名前空間、静的メソッド、およびWebで見つかった他のスタッフを使用して、hファイルとcppファイルを編集しようとしましたが、何もしませんでした。Depency Walker Toolについて話している他の投稿も見ましたが、dllを開くことができません。また、「estern」を使用することで回避できることがわかったため、コンパイラが関数名に奇妙なサフィックスを追加することもわかりました。 hまたはcppファイルの「C」」ですが、できませんでした。
私のインターフェース:
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(){
}