这一定是一个非常愚蠢的问题,但在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,但似乎没有任何效果。
有什么想法吗?
答案 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”错误。