我真的希望有人能帮助我,因为这个问题让我完全陷入困境和沮丧。
昨天,我在开发盒上安装了全新的 Windows 7 x64。
我安装了 VS2008,Tortoise SVN,进行了检查,编译了我当前的项目,一切都很好。
但是当我去运行(在 VS 中按 F5 或只是从 shell 运行 exe)时,我会看到一个如下所示的对话框:
(来源:aliparr.net)
所以我摆弄了一下,没有发现明显的问题。我退出了depends.exe,认为可能缺少一个dll,然后我得到了这个:
(来源:aliparr.net)
所以我就玩了,找到不同版本的 gpsvc.dll 和 ishims.dll 并将它们与 .exe 一起放入,但运气不佳。
如果我在 dependent 中进行配置文件(位于 vs 的输出窗口之后),我会得到以下结果:
..
Loaded "c:\windows\syswow64\ADVAPI32.DLL" at address 0x75F20000 by thread 1. Successfully hooked module.
Loaded "c:\windows\syswow64\LPK.DLL" at address 0x76B20000 by thread 1. Successfully hooked module.
Loaded "c:\windows\syswow64\USP10.DLL" at address 0x761C0000 by thread 1. Successfully hooked module.
Loaded "c:\windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4926_none_508ed732bcbc0e5a\MSVCR90.DLL" at address 0x70570000 by thread 1. Successfully hooked module.
Loaded "c:\users\ali\desktop\repository\development\trunk\spree\bin\debug\OPENLDAP.DLL" at address 0x001E0000 by thread 1. Successfully hooked module.
Exited "c:\users\ali\desktop\repository\development\trunk\spree\bin\debug\SPREE.EXE" (process 0x5D4) with code -1073741701 (0xC000007B) by thread 1.
所以看来 openldap.dll 是在一切出错之前最后加载的东西。我需要这个 dll,因为我在应用程序中使用 cURL 进行一些 JSON 通信...
我尝试过移动文件并尝试不同的 dll,但老实说我在这里表现得有点盲目。有人可以帮助我或为我指出正确的方向吗?
应该注意的是,这些 dll 和安装程序在 Windows Vista x64 和 x86 中工作正常 - 这是 Windows 7 的事情吗?
提前非常感谢,完成后我可能还剩下一些头发。
<小时/>编辑
我现在意识到,curl.exe 的死亡方式与 openldap.dll 的死亡方式完全相同 - 我猜是某些 Windows 7 问题? 你/有人可以在不依赖 openldap 的情况下使用curl 吗?是否有另一个轻量级 C/C++ 库可以让我通过 http 获取文档并执行奇怪的 http POST ?
谢谢
最佳答案
我自己也遇到了一个非常相似的问题:我正在开发一个C程序(使用MinGW gcc编译器),它使用curl库来执行http GET操作。我在 Windows XP(32 位)和 Windows 7(64 位)上进行了测试。我的程序在 Windows XP 中运行,但在 Windows 7 中它崩溃了,并出现与 OP 相同的 0xc000007b 错误消息。
我在一个精简的程序上使用了 Dependency Walker(仅调用了一次curl 库:curl_easy_init()
)。我基本上得到了与您相同的日志,其中 OPENLDAP.DLL 作为崩溃前最后一个成功加载的模块。
但是,我的程序似乎在加载 LIBSASL.DLL 时崩溃了(根据 Windows XP 上运行的 Dependency Walker 的日志,这是加载的下一个模块)。
再次查看 Windows 7 上 Dependency Walker 的日志时,LIBSASL.DLL 确实显示了一个 x64 模块。我设法通过将 DLL 文件的 32 位版本从硬盘上的另一个应用程序复制到我的程序目录来运行我的程序。
希望这对其他有类似问题的人有用(如果这些年后问题仍然没有解决,也适用于OP)。如果将 32 位版本的 LIBSADL.DLL 复制到程序目录没有帮助,则另一个模块可能会导致崩溃。在 32 位和 64 位系统上运行 Dependency Walker,并从成功运行的日志中查找模块名称。
关于windows-7 - Windows 7 OpenLDAP Curl DLL 依赖 hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1598888/