放在何处使用导入到C#程序中的非托管的DLL?(Where to place an unmanage

2019-10-23 09:10发布

这必须是一个非常愚蠢的问题,但我仍然很绿,当涉及到C#。

无论如何,我有一个DLL,我用这样的行导入它:

[DllImport(@"MyCoolDll")]

我举起由供应商提供的演示程序这条直线,但它不停地抱怨,它无法找到DLL。 实际的错误(从Visual Studio 2010)是这样的:

Unable to load DLL 'MyCoolDll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我试着将已编译的DLL的bin /调试和斌/释放文件夹。 我甚至试过将其复制到system32下,但似乎没有任何工作。

有任何想法吗?

Answer 1:

你的DLL可能有依赖性也需要加载。 你检查了吗?



Answer 2:

我知道你必须给完整的文件名。 所以

[DllImport(@"MyCoolDll.dll")]

它应该从BIN \ Debug或Bin \文件夹中释放工作。

更新

这是我学会了如何导入托管DLL。 如果是正常工作的测试应用程序,检查它的bin \ debug文件夹,看看有什么是你的不同。 可能还提供额外的dll被引用? 同时检查示例应用程序内的所有引用,以确保您不会错过任何。



Answer 3:

据我所知,你必须提供扩展:

[DllImport(@"MyCoolDll.dll")]

我通常程序二进制(因此斌\调试的发展)保持局部这些DLL



Answer 4:

对我来说,关键是看在Visual Studio构建控制台输出中列出的路径,看到二进制文件被放在哪里。 有一次,我发现,我知道从哪里抄的非托管的DLL,它固定的“无法加载DLL”错误。



文章来源: Where to place an unmanaged DLL for use importing into a C# program?