gpt4 book ai didi

Java + JNA : The specified procedure could not be found

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:49:48 26 4
gpt4 key购买 nike

我正在尝试使用 visual studio 创建一个 dll 文件并在 java 项目中使用/访问它。该库似乎已加载,但总是抛出相同的异常:线程“main”中的异常 java.lang.UnsatisfiedLinkError:查找函数“函数”时出错:找不到指定的过程。我的 C/C++ 技能不是最好的,所以问题可能就在那里。我试图编辑 h 和 cpp 文件,使用类、命名空间、静态方法和其他在网络上找到的工作人员,但无能为力。我还看到其他帖子谈论 Depency Walker 工具,但它无法打开我的 dll,我还看到编译器向函数名称添加了一些奇怪的后缀,据我所知,可以通过使用“estern”来避免它'C'"在 h 或 cpp 文件中,但我做不到。

我的界面:

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(){

}

最佳答案

  1. 确保在 simpleDll 命名空间之外声明您的函数。
  2. 确保用 extern "C" 装饰它
  3. 确保公开您的函数 __declspec(dllexport) void __cdecl function(); 或使用 module definition file

关于Java + JNA : The specified procedure could not be found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com