msvcrt.dll和pcre库出错

时间:2012-10-31 17:16:16

标签: c++ c windows dll pcre

我编写了一个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库正在使用它,实际上它有问题,但我不知道如何解决这个问题。任何人都可以帮助我吗?

以下是步行者给我看的图片:

enter image description here

2 个答案:

答案 0 :(得分:3)

理由可能性(afaiu):

  

a)在构建时你特意链接到了msvcrt.dll - 这应该是   根据Microsoft支持不会发生,除非具体做到   它

     

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

取决于原因, 这里有一些想法要解决:

  

1)可能有一些程序/驱动程序/等。在XP上安装   已经推出“Vista / Win7相关垃圾”的机器。它是   (由互联网说)PCRE3.DLL属于“GnuWin32非系统”   进程“。这意味着您可以尝试找到它并重命名/删除它。或者   删除使用它的程序。

     

2)安装可以重新分发你的C ++的redist for XP   用于在Win7上构建可能有所帮助。这是VS2005的链接:( darn ..   使用谷歌 - 我每个帖子只能提供两个链接: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

答案 1 :(得分:0)

(代表OP)

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

这是指向正确的lib的链接: pcre-4.4-dll.zip