使用 /MDd 标志编译时,C# 应用程序找不到 Dll

发布于 2024-09-16 21:58:06 字数 557 浏览 8 评论 0原文

我有一个 C# 应用程序,它链接到一些 c# DLL,这些 DLL 又使用绑定来调用其他 Dll 中的 c++ 函数。

如果我使用 /MTd 编译 c++ Dlls,这一切都可以正常工作,但是当我使用 /MDd 时,我在 C# 应用程序中收到 XMLParseException,抱怨它找不到任何 Dlls(它无法找到我使用的第一个 Dlls) 。我最好的猜测是,使用另一个开关会导致它更改查找 Dll 的路径,从而导致失败。我使用 DependencyWalker 进行了仔细查看,它实际上找不到的两个 Dll 是“IESHIMS.DLL”和“WER.DLL”。然而,我在 DependecyWalker 树中的任何位置都看不到我的 c# Dll。有人知道这里可能出了什么问题吗?

此外,使用非调试等效项(/MD 和 /MT)也没有什么区别。无论如何,我不能使用 /MT,因为它会导致另一个错误。

编辑:我已经稍微缩小了问题范围。当使用 VS2010 命令提示符编译和链接时,我的应用程序工作正常,使用 VS2008 命令提示符它仍然无法找到 Dll。有谁知道这两个版本的 VS 之间有什么差异可能导致我上面描述的行为吗?

提前致谢,

I have a C# application which links to a few c# DLLs which in turn use bindings to call c++ functions in other Dlls.

This all works fine if I compile the c++ Dlls with /MTd but when I use /MDd I get an XMLParseException in my C# app complaining that it can't find any Dlls(it fails to find the first of my Dlls that I use). My best guess is that using this other switch causes it to change the path where it looks for its Dlls, causing it to fail. I used DependencyWalker to have a closer look and the two Dlls it actually fails to find are 'IESHIMS.DLL' and 'WER.DLL'. I can't see my c# Dlls anywhere in the tree in DependecyWalker however. Anyone have any ideas what might be wrong here?

Also, using the non-debug equivalents (/MD and /MT) make no difference. Regardless, I can't use /MT as it causes another bug.

EDIT: I've narrowed the problem down somewhat. When compiled and linked using the VS2010 command prompt, my app works fine, with the VS2008 command prompt it still fails to find the Dll. Does anyone know any differences between these two version of VS which could cause the behaviour I described above?

Thanks in advance,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

完美的未来在梦里 2024-09-23 21:58:06

您是否针对相同的运行时库编译所有模块?从:
http://msdn.microsoft.com/en-us /library/2kzt1wy3(VS.80).aspx

“传递给链接器的给定调用的所有模块都必须使用相同的运行时库编译器选项(/MD、/MT、/LD)进行编译。 ”

Are you compiling all the modules against the same run-time libraries? From:
http://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx

"All modules passed to a given invocation of the linker must have been compiled with the same run-time library compiler option (/MD, /MT, /LD)."

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文