我想用 java jni 创建 .dll。我的 .cpp 文件引用了 .dll 的外部 .lib 。当我编译此文件(使用 cl 命令)时出现错误:
LNK2019: unresolved external symbol "__declspec(dllimport) unsigned long __stdcall ConnectDevice(char const *, unsigned long)"
(__imp_?ConnectDevice@@YGKPBDK@Z)... fatal error LNK1120: 1 unresolved externals
我可以从使用另一个 .lib 和 .dll 的 .cpp 创建 .dll 吗?
最佳答案
是的,你可以。您可以直接链接到它,方法是将其放入您的 .c/.cpp 文件之一:
#pragma comment(lib,"libname")
或在命令行(对于 MSVC 不常见)或在 IDE 选项中指定库。
更棘手的是确保找到您的 DLL。如果两个 DLL 都保存在同一个文件夹中,并且没有使用 SetDllDirectory()(不寻常),那么应该可以找到它。
Dependancy Walker (depends.exe) 等工具可以帮助解决此类问题。或者 Process Explorer (procexp) [please google] 可以显示每个进程加载了什么 DLL(ctrl+d 那里)。
关于Java创建.dll文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260798/