找不到指定的过程

找不到指定的过程

我正在尝试使用Visual Studio创建一个dll文件,并在Java项目中使用/访问它。该库似乎已加载,但始终会引发相同的异常:
线程“主”中的异常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(){

}

最佳答案

  • 确保在simpleDll命名空间之外声明函数。
  • 确保使用extern "C"
  • 装饰它
  • 确保公开您的函数__declspec(dllexport) void __cdecl function();或使用module definition file
  • 10-06 14:28