我正在尝试使用 Visual Studio 创建一个 dll 文件并在 java 项目中使用/访问它。该库似乎已加载,但总是抛出相同的异常:
线程“main”中出现异常 java.lang.UnsatisfiedLinkError:查找函数“function”时出错:找不到指定的过程。
我的 C/C++ 技能不是最好的,所以问题可能就在那里。我尝试使用类、命名空间、静态方法和其他在网络上找到的人员来编辑 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();
or use 模块定义文件 http://msdn.microsoft.com/en-us/library/hyx1zcd3%28v=vs.110%29.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)