一般问题
有没有办法找出DLL无法在程序中加载的原因?我在我和第三方软件中加载DLL时会定期遇到错误。有一个常用的方法可以解决这种情况,并确定特定系统上特定DLL的错误。
例如
我用Rust(x64,MSVC ABI)编译了一个简单的DLL:
use std::fs::File;
use std::io::Write;
#[no_mangle]
pub extern fn test_dll_call() -> u8 {
let mut f = File::create("C:\\test.txt").unwrap();
f.write(b"Hello, world!").unwrap();
return 0
}
它是通过以下方式构建的:
cargo build --release
DependencyWalker在我的系统中显示了许多用于编译DLL的API-MS-WIN-CORE- * DLL:
然而,在我的Windows 10 x64系统上,我已经安装了MS Visual Studio 2015和MS C ++ Redistributables 2005,2010,2012,2013和2015。
许多在DependencyWalker中缺少依赖项的DLL工作正常,所以我试图在Lua中使用我的DLL:
require("test");
function main()
test.test_dll_call();
end
但是我得到了简洁的错误“循环或以前的错误加载模块'test'”。其他一些第三方DLL已经像魅力一样加载。如何检查我的DLL有什么问题?