在我开发WPF应用程序的笔记本电脑上,一切正常,调试并启动.exe应用程序。
我的应用程序使用本机DLL,以解决我在bin / debug(release)文件夹中添加DLL的引用问题。我使用DllImport访问它,如下所示:
[DllImport("xptodll.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int LDA_About();
问题是当我尝试在另一台PC上运行.exe应用程序时,当我需要访问DLL时它会崩溃。我创建一个句柄来记录任何未处理的异常,并出现以下错误:
无法加载DLL'xptodll.dll':指定的模块无法加载 找到。来自HRESULT的异常:0x8007007E)
bin / debug目录有xptodll.dll和app文件:.exe,.application,.exe.config,.exe.manifest,.pdb。
也许这很重要,xptodll.dll与硬件交互,但为什么它们在两台机器上都没有相同的行为?
答案 0 :(得分:15)
可能存在一些失败的进一步依赖。我的猜测是xptodll.dll
本身依赖于故障机器上缺少的其他库。 xptodll.dll
的文档应该解释需要哪些依赖项。如果文档没有明确缺失的内容,您可以使用Dependency Walker自行诊断问题。
答案 1 :(得分:3)
另一个问题可能是(除了所有这些"将DLL置于正确的位置")如果DLL是使用Visual Studio创建的,例如。必须安装Visual Studio 2012,也必须安装64位VCRedistributable(vcredist_x64.exe),由Visual Studio提供。