我添加了MyAssembly.dll作为对我的查询的附加引用,并且工作正常:我能够毫无问题地使用其中的各种类。
MyAssembly中一个类的方法之一.dll引用另一个dll(Wrapper.dll(。 包装器.dll使用 [DllImport] 访问 C++ dll (C.dll( 中的功能:
[DllImport("C.dll", CallingConvention = CallingConvention.StdCall, EntryPoint ="CPlusPlusFunction"(] internal static extern UInt32 _CPlusPlusFunction([MarshalAs(UnmanagedType.LPWStr(] string file_path(;
虽然此方法在从引用 MyAssembly .dll(引用 Wrapper.dll,引用 C.dll(的 MyApp 执行时工作得很好.exe,但在 LINQPad 中我无法让它工作。
如果我只添加对 MyAssembly 的引用.dll并尝试运行该方法,我会得到:
DllNotFound异常:无法加载 DLL"C.dll":找不到指定的模块。(HRESULT的例外:0x8007007E(
如果我只为 Wrapper.dll 添加附加引用,则会出现相同的错误。
如果我为包装器.dll和 C.dll 添加附加引用,我会得到:
无法打开元数据文件"C.dll"-"尝试加载格式不正确的程序"。
如果我只为 C 添加附加引用.dll则会出现相同的错误。
关于如何让它像在 MyApp.exe 中一样在 LINQPad 中工作的任何想法?
你以完全相同的方式执行此操作,您必须将其复制到与EXE相同的目录中,以便Windows可以找到它。 在本例中为 LINQPad EXE。 C:\Program Files (x86(\LINQPad4 (缺省情况下(。 或者 PATH 上的任何目录,c:\windows\syswow64 是臭名昭著的选择。 最好不要那样做。