我有一个包装C ++ DLL的.NET库:
public class Wrapper
{
public void CallFoo()
{
Foo();
}
[DllImport("Unmanaged.dll"), EntryPoint = "foo", CallingConvention = CallingConvention.Cdecl)]
private static extern void Foo();
}
如果我将包装器dll添加到.NET项目中,我可以调用该方法。但是,如果我尝试动态调用该方法,如下所示,我得到了DLLNotFoundException(它告诉我“Unmanaged.dll”无法找到)。
Assembly assembly = Assembly.LoadFrom(@"C:\Wrapper.dll");
Type type = assembly.GetTypes()[0];
dynamic wrapper = Activator.CreateInstance(type);
wrapper.CallFoo();
在Visual Studio中,“Unmanaged.dll”未显示为在“模块”部分中加载。因此,我认为我应该找到一种方法来加载“Unmanaged.dll”。
我愿意接受任何建议。
编辑:“Unmanaged.dll”与“Wrapper.dll”位于同一目录中。
答案 0 :(得分:0)
如果你的" Unmanaged.dll"也依赖于另一个dll,你仍然会得到同样的例外。这有点误导,但如果您要添加依赖于工作目录的DLL,您的问题可能会得到解决。