在哪里放置非托管DLL以便导入C#程序?

时间:2010-06-21 13:35:58

标签: c# dll visual-studio-2010 dllimport

这一定是一个非常愚蠢的问题,但在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 / debug和bin / release文件夹中。我甚至尝试将它复制到system32,但似乎没有任何效果。

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

您的DLL可能还有需要加载的依赖项。你检查过了吗?

答案 1 :(得分:3)

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

[DllImport(@"MyCoolDll.dll")]

它应该来自bin \ debug或bin \ release文件夹。

<强>更新

This是我学习如何导入非托管dll的地方。如果它是一个正常工作的测试应用程序,请检查它的bin \ debug文件夹以查看与您的不同之处。可能是一个额外的dll被引用?同时检查示例应用程序中的所有引用,以确保您没有遗漏任何引用。

答案 2 :(得分:0)

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

[DllImport(@"MyCoolDll.dll")]

我通常将这些dll保存在本地程序二进制文件中(所以在bin \ Debug for development中)

答案 3 :(得分:0)

对我而言,关键是查看Visual Studio Build控制台输出中列出的路径,以查看二进制文件的放置位置。一旦我找到了,我知道在哪里复制非托管DLL并修复了“无法加载DLL”错误。