从Windows 10编译VS2017在Windows 7和…上部署..找不到DLL
Compile from Windows 10 VS2017 Deploy on Windows 7 and ... DLL not found
2.5天,我试图找出等错误的根源
Could not load file or assembly "mydll.dll" or one of its dependencies.
The specified module could not be found
该项目是一个基于Windows C#的应用程序。该dll是在项目内部的C++库中创建的。我使用VS2017 Entreprise在Windows 10 64位下编译,在Windows 7 64位下部署有问题(在Windwos 10下部署很好…(。所有.NET libs/exes/plugins都以.NET 4.5.2为目标(安装在部署计算机上(。图书馆使用
Windows SDK Version: 8.1
Platform Toolset: Visual Studio 2017 (v141)
该项目制作了一个msi安装程序,我成功地将其安装在部署计算机上。dll当然在那里。
所以我用进程监视器观看了程序的执行。dll似乎加载了好几次。我最后一次看到以下内容。
"10:31:13.7703319 AM","App.exe","1412","CloseFile","C:Program Files (x86)VendorProgrammucrtbased.dll","SUCCESS",""
"10:31:13.7703575 AM","App.exe","1412","ReadFile","C:Progra mFiles (x86)VendorProgrammucrtbased.dll","SUCCESS","Offset: 1,452,544, Length: 5,120, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O, Priority: Normal"
"10:31:13.7721639 AM","App.exe","1412","CreateFile","C:Program Files (x86)VendorProgrammapi-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7722398 AM","App.exe","1412","CreateFile","C:WindowsSysWOW64api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7723496 AM","App.exe","1412","CreateFile","C:Windowssystemapi-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7724133 AM","App.exe","1412","CreateFile","C:Windowsapi-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7725133 AM","App.exe","1412","CreateFile","C:WindowsSysWOW64api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7725731 AM","App.exe","1412","CreateFile","C:WindowsSysWOW64api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7726340 AM","App.exe","1412","CreateFile","C:Windowsapi-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7726991 AM","App.exe","1412","CreateFile","C:WindowsSysWOW64wbemapi-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7727622 AM","App.exe","1412","CreateFile","C:WindowsSysWOW64WindowsPowerShellv1.0api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7729093 AM","App.exe","1412","CloseFile","C:Program Files (x86)VendorProgrammmydll.dll","SUCCESS",""
api-ms-win-core-localization-l1-2-0.dll确实是由依赖walker和一起列出的
API-MS-WIN-CORE-FILE-L1-2-0.DLL
API-MS-WIN-CORE-FILE-L2-1-0.DLL
API-MS-WIN-CORE-LOCALIZATION-L1-2-0.DLL
API-MS-WIN-CORE-PROCESSTHREADS-L1-1-1.DLL
API-MS-WIN-CORE-SYNCH-L1-2-0.DLL
API-MS-WIN-CORE-TIMEZONE-L1-1-0.DLL
API-MS-WIN-DOWNLEVEL-ADVAPI32-L1-1-0.DLL
API-MS-WIN-DOWNLEVEL-OLE32-L1-1-0.DLL
API-MS-WIN-DOWNLEVEL-SHLWAPI-L1-1-0.DLL
GPSVC.DLL
MSISO.DLL
谷歌告诉我,所有这些都与这个问题无关。。。现在,使用nm-D
和ldd
在linux下2.5分钟内完成任务需要2.5天。。。
在尝试从Windows 10高效地瞄准Windows 7 3天后,我分享了我的经验,并得出了以下答案:
这是Microsoft开发人员从未预见到的。MS已经提供了一些破解,但无法实现可靠的开发链。
- 在您将遇到的其他问题中,请查看此链接。。(说真的,你必须手动卸载Microsoft软件包才能进行Microsoft Update?说真的是Microsoft吗?(
- 截至2018年,还没有一个有效的工具可以告诉你微软世界缺少什么动态库(基本上没有等效的ldd(。。。甚至不要开始告诉我DependencyWalker或其他什么,它让位于太多的假阳性(>>100%信噪比(,并且已经过时了
这与这里不值得一提的1000个其他Microsoft典型问题(包冲突等(一起,导致这样做在理论上可能,但在实践中不是。(如果在Linux下几分钟内完成的事情需要数小时或数天,我认为这在实践中是不可行的(
我给读者的建议是,如果你需要以Win7为目标,那么就让自己成为Win7开发虚拟机。
当然,如果你的公司只能给你一个VS2017而不是2015,问题就会出现。这种困境对于微软来说是众所周知的,事实上这正是他们的目标。强迫您购买新产品,或者您的客户切换到新的操作系统。。。
Richard Critten的回答BTW与这个问题无关
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 从Windows 10编译VS2017在Windows 7和…上部署..找不到DLL
- Windows 上的 KDE 框架部署
- 将使用 QML 的 QBS 构建的 Qt 应用程序部署到 Windows
- 如何将基于 qt 的应用程序(在 Mac 上开发)部署到 Windows
- 激活和部署“ QvIrtualKeyboard”(在Windows中)
- 在Windows上部署Qt 5应用程序
- 正确的方法来确保使用Windows Phone应用程序部署C DLL
- 将QT QML应用程序部署到Windows上显示了一个空白窗口
- 部署Qt-dll文件-找不到windows插件,尽管平台/qwindows.dll存在,因此存在libEGL和libGL
- 使用InstallShield(windows)部署的C++应用程序执行错误
- 在Windows中部署Qt应用程序
- 在Windows上部署QML应用程序的正确方法
- Qt Windows 部署:应用程序无法启动
- Qt/C++:如何为windows部署Qt应用程序
- 文件夹中的Windows应用商店部署文件,而不是MSI
- brekpoint与部署在Windows CE模拟器中的vs2008中的MFC C++代码没有达成一致
- Qt4 for symbian -如果项目是由Qt4 Creator在mac上构建的,它可以通过windows部署到sy
- Qt在Windows上部署应用程序需要dll
- 部署工具 企业 - 什么是最适合 Windows 环境的