【问题标题】:Error with msvcrt.dll and pcre librarymsvcrt.dll 和 pcre 库出错
【发布时间】:2012-10-31 17:16:16
【问题描述】:

我编写了一个 C 程序,在 Windows 7 和 Linux 上运行良好,但在 Windows XP 上执行时出现错误:

"_except_handler4_common could not be located in the dynamic link library msvcrt.dll"

我研究了一下,有人说删除我没有的DLL“dwmapi.dll”,所以这不是我的问题。

有人告诉我使用depends walker(depends.exe) 来查找谁在使用msvcrt.dll。我确实发现pcre 库正在使用它,实际上它存在问题,但我不知道如何解决这个问题。谁能帮帮我?

以下是 Walker 向我展示的图片:

【问题讨论】:

  • XP 机器上是否安装了适当的 VC 运行时可再发行组件? Win7 上的 VC 运行时实际上比 WinXP 上的更新了三代(即使是 SP2)。
  • 您好,如果您的问题现在已经被下面的答案解决了,请点击答案旁边的勾。否则,请提供您自己的问题答案并将其标记为正确答案。

标签: c++ c windows dll pcre


【解决方案1】:

原因可能性(afaiu):

a) 您在构建时专门链接到 msvcrt.dll - 这应该 根据 Microsoft 支持,不会发生 除非您特别这样做 它。

b) 在您的 XP 上安装或复制的其他一些程序/驱动程序 正在触发指向“错误”版本的 msvcrl.dll 的链接。

根据原因, 这里有几个想法需要解决:

1) 可能有一些程序/驱动程序/等。在你的 XP 上安装 机器上已经引入了“Vista/Win7相关的废话”。这是 说(通过互联网)PCRE3.DLL 属于“GnuWin32 Non-system 进程”。这意味着您可以尝试找到它并重命名/删除它。或者 删除你使用它的程序。

2) 安装您 您的 C++ 可再发行组件的 XP 版 redist 用于在 Win7 上构建 可能会有所帮助。这是 VS2005 的链接:(该死的.. 使用谷歌 - 我每个帖子只能提供两个链接:P)

重建:

3) 只需在您的 XP 机器上使用一些资源从源代码构建文件 VisualStudio 版本就可以搞定了。并检查那些 VS 项目 属性!

4) 修复您在 Windows7 上的构建。您可能正在链接到 Windows 7 版本中 msvcrt.dll 中的 _except_handler4_common。确保你不这样做。您可以专门指示链接器 不要在 VisualStudio 项目属性中链接到它 “/NODEFAULTLIB:msvcrt80.lib”。你也没有说明你是什么 用于建筑。 VS2005、VS2008、VS2010、gcc?

根据有根据的猜测和Jeffrey Tan research here回答:

research here:

【讨论】:

  • 谢谢,这似乎是我的问题,我现在就试试,告诉你它是否有效,顺便说一下我正在使用 dev c ++(gcc)
  • 对不起,我不明白 id “据说(通过互联网)PCRE3.DLL 属于“GnuWin32 非系统进程”。这意味着你可以尝试找到它并重命名/删除它”,你的意思是删除 pcre3.dll?如果是,我不能因为我需要使用正则表达式(pcre3.dll)
【解决方案2】:

(代表 OP)

问题出在 pcre3.dll 上,正如我之前所说,我只是更改了它的版本,我使用的是 7.x 版本并更改为调用 pcre.dll 而不是 pcre3.dll 的 4.4 ,如果有人有同样的问题,那可以解决我的问题。

这里是正确库的链接: pcre-4.4-dll.zip

【讨论】:

    猜你喜欢
    • 2011-12-13
    • 1970-01-01
    • 2021-04-08
    • 2021-03-28
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多