首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在加载我自己的DLL时无法找到适当的MSVCP140d.dll依赖项,即使它存在于文件夹中。

在加载我自己的DLL时无法找到适当的MSVCP140d.dll依赖项,即使它存在于文件夹中。
EN

Stack Overflow用户
提问于 2021-05-14 19:31:45
回答 1查看 176关注 0票数 0

今天我遇到了一个问题。

我正在构建我自己的动态链接库(C++),它被用作OpenCities地图的插件。在我的本地计算机(用于开发项目的同一台计算机)上,一切正常工作,我的DLL没有问题地加载,一切正常。然而,今天我在虚拟机上尝试了同样的方法,看看它在其他机器上是否也能正常工作。这时,我遇到了问题,说我的DLL由于它的一些依赖项而无法加载(这是我的猜测)。

所以我开始调查。我使用DependencyWalkerProccess 来查看DLL是如何加载的,以及失败了什么。输出更让我困惑。

在我的本地机器上,当我打开DLL时,它也可以加载像MSVCP140D.dll这样的依赖项。

我假设我甚至可以看到它的内容和整个路径(当我单击以显示完整的路径时)。proccess监视器还显示,它从我在Dependency中看到的文件夹中正确加载。

一开始,我看到它在名为MSVCP140D.dll的大写DLL中失败,但随后它成功地获得了正确的路径(System32 32/msvcp140d.dll)。

现在是虚拟机(或其他计算机)。在这里,我无法在依赖项遍历器中看到通往msvcp140d.dll的路径,因此我也无法看到内容(或该DLL中的其他包含)。

然后,即使在进程管理器中,它也无法加载这些DLL,即使它看起来是正确的路径。问题是,它查找大写DLL名称MSVCP140d.dll (我可以从字面上看到system32文件夹中的msvcp140d.dll ),没有找到结果名称。为什么它寻找的是MSVCP140D.dll而不是msvcp140d.dll?我的意思是,我希望类似于我的本地机器上的行为,开始寻找小写dll版本,但它仍然只查找大写版本。

我尝试过安装VS再发行版,.NET框架,但是没有任何效果。我正在使用VS17构建这个项目,它的x64 DLL还带有/clr和/MDd开关(如果有帮助的话)。

我会在特定的OpenCities地图论坛上询问,但对于我来说,这就像是某种一般性的建筑问题,这是我错过的。

你们有什么建议吗?谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-14 19:39:16

不应该根据运行时库DLL的调试版本传送代码。微软不支持这一点。DLL名称不区分大小写,BTW,所以这是一条红鲱鱼.

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

https://stackoverflow.com/questions/67540015

复制
相关文章

相似问题

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