首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决DLL找不到的问题

如何解决DLL找不到的问题
EN

Stack Overflow用户
提问于 2022-06-08 12:31:25
回答 1查看 267关注 0票数 0

在我的C# Wpf项目中,我需要一些来自C++的功能。因此,我创建了自己的C++ DLL项目,名为LibC。而Wpf应用程序可以在我的电脑中正常运行。但是在测试者的电脑上,日志上写着:

代码语言:javascript
复制
Unable to load DLL 'LibC.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我检查了DLL文件LibC.dll在那里。通过查看这篇文章:无法加载DLL (无法找到模块HRESULT: 0x8007007E)

Anthony Hayward的答案激发了我的灵感。所以我在dumpbin命令下运行,发现我的dll依赖于这4个窗口的dll。在测试器的计算机上,缺少了两个:vcruntime140d.dllucrtbased.dll。在我的计算机上,可以找到所有的四个dll。所以我将缺失的两个dll复制到测试人员的计算机上,并将它们与我的LibC.dll放在一起,然后这个应用现在运行良好。

我的问题是如何更好地解决这类问题?如前所述,我手动将缺失的dll文件复制到测试人员的计算机上。

另一个选项是将这两个dll放到我的项目中,并与我的项目文件一起释放它们,包括exe文件和LibC.dll文件。

是否可以静态地将两个缺失的dll链接到我的LibC.dll中?或者其他建议?

代码语言:javascript
复制
"c:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\vc\Tools\MSVC\14.29.30133\bin\Hostx64\x64\dumpbin.exe" /DEPENDENTS libc.dll
Microsoft (R) COFF/PE Dumper Version 14.29.30143.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file libc.dll

File Type: DLL

  Image has the following dependencies:

    KERNEL32.dll
    USER32.dll
    VCRUNTIME140D.dll
    ucrtbased.dll

  Summary

        1000 .00cfg
        1000 .data
        2000 .idata
        1000 .msvcjmc
        3000 .pdata
        4000 .rdata
        1000 .reloc
        1000 .rsrc
        A000 .text
       10000 .textbss
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-08 12:52:28

您的用户将需要安装可视化c++运行库。这样做的典型方法是使用一个静默执行此操作的安装程序。据我所知,它们不能编译到您的程序中,而且许可证禁止在重新分配包之外分发丢失的dll。

请注意,如果更新用于编译dll的Visual版本,则可能需要更新此包。

还请注意,您需要部署应用程序的发行版构建,因为dll的调试版本仅作为visual studio的一部分分发。

最后,纯.Net代码没有这类问题,所以如果您有c++代码,最好用c#重写它。如果您想访问某个第三方dll,最好直接对该dll使用P/Invoke。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72545760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档