Windows 7 Windows 7 OpenLDAP Curl DLL依赖关系地狱

Windows 7 Windows 7 OpenLDAP Curl DLL依赖关系地狱,windows-7,curl,openldap,dll,Windows 7,Curl,Openldap,Dll,我真的希望有人能帮助我,因为这个问题让我完全陷入困境和沮丧 昨天,我在一个开发盒上安装了一个全新的Windows7x64 我安装了VS2008,Tortoise SVN,做了一个检查,编辑了我当前的项目,一切都很好 但当我开始运行时(在VS中运行F5或只是从shell中运行exe),我会看到一个如下对话框: (来源:) 所以我四处闲逛,看不到明显的问题。我弹出dependens.exe,认为可能缺少一个dll,我得到以下信息: .. Loaded "c:\windows\syswow64\AD

我真的希望有人能帮助我,因为这个问题让我完全陷入困境和沮丧

昨天,我在一个开发盒上安装了一个全新的Windows7x64

我安装了VS2008,Tortoise SVN,做了一个检查,编辑了我当前的项目,一切都很好

但当我开始运行时(在VS中运行F5或只是从shell中运行exe),我会看到一个如下对话框:


(来源:)

所以我四处闲逛,看不到明显的问题。我弹出dependens.exe,认为可能缺少一个dll,我得到以下信息:

..
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.

(来源:)

所以我玩游戏,找到不同版本的gpsvc.dll和ishims.dll,并将它们与.exe放在一起,运气不好

如果我在Dependes(在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和安装程序在WindowsVista x64和x86中运行良好-这是Windows7吗

提前非常感谢,做完这件事后我可能还有头发


编辑

我现在意识到curl.exe的消亡方式与openldap.dll完全相同——我想是windows 7的一些问题吧? 您/是否有人拥有不依赖openldap的curl?有没有另一个轻量级的C/C++库可以让我通过http获取一个文档并执行奇怪的http POST


谢谢

这里有类似的问题。DLL依赖于GPSVC.DLL和MSVCR90.DLL

通过将环境变量路径设置为C:\Program Files(x86)\Internet Explorer,我成功地摆脱了IESHIMS.dll。当然不需要这样做


有解决方法吗?

我自己也有一个非常类似的问题:我正在开发一个C程序(使用MinGW gcc编译器),它使用curl库执行http GET操作。我在WindowsXP(32位)和Windows7(64位)上测试了它。我的程序在Windows XP中运行,但在Windows 7中它崩溃了,并显示与OP相同的0xc000007b错误消息

我在一个精简的程序上使用了Dependency Walker(只调用了一次curl库:
curl\u easy\u init()
)。我基本上得到了与您相同的日志,OPENLDAP.DLL是崩溃前最后一个成功加载的模块

然而,我的程序似乎在加载LIBSASL.DLL时崩溃了(根据Windows XP上运行的Dependency Walker的日志,LIBSASL.DLL是加载的下一个模块)

当再次查看Windows 7上Dependency Walker的日志时,LIBSASL.DLL确实显示了一个x64模块。通过将32位版本的DLL文件从硬盘上的另一个应用程序复制到程序目录,我成功地让程序运行


希望这能对其他有类似问题的人起作用(如果问题在这些年后仍然没有解决,OP也能起作用)。如果将32位版本的LIBSADL.DLL复制到程序目录没有帮助,则另一个模块可能会导致崩溃。在32位和64位系统上运行Dependency Walker,并从成功运行的日志中查找模块名称。

我无法完全回答您的问题,我已经在Windows 7 Professional x64上编译了libcurl,没有任何问题。虽然我没有使用OpenLDAP支持编译它,所以我想这就是问题所在

关于IEShims.dll,Dependency Walker通常会将其报告为缺少模块。不记得确切的原因,但这是关于在%Path%中找不到它时动态加载它

但是,如果您需要调试此程序,并且在Windows 7上,请尝试执行从%ProgramFiles%\Internet Explorer\IEShims.dll到%windir%的硬链接


尽管如此,我在屏幕转储中看到Spree.exe似乎没有作为x64二进制文件加载,很可能就是它。加载导出函数和管道或exec()二进制文件有区别,前面提到的要求导入器和导出器的体系结构都相同。

我还发现我的正在尝试加载64位版本的LIBSASL.DLL,这是我的64位Tortoise发行版附带的版本。我还只需要curl来提取一点JSON数据。我认为最好的解决方案是从源代码处重建libcurl并排除LDAP,因为我根本不需要它。

libsasl需要ieshims.dll,如果openldap中没有sasl支持,那么就不需要ieshims.dll。

如果使用windows x64,则必须将dll复制到c:/windows/SysWoW64。当我想在WindowsOS8中使用pthreads时,我也遇到了同样的问题。将pthreads dll复制到SysWow64时,程序成功运行

阿里,你是否考虑过将此作为错误报告提交给Microsoft Connect?这可能是M$部分的“oops”。如果它确实是一个真正的bug,我可以这样做。不过,我很有可能是“哎呀”;)是的……我只是觉得很有趣,它在Vista上工作,但在Windows7上却不工作,你知道吗?但无论如何,祝你好运!你问过OpenLDAP或curl列表吗?你把它分类了吗?我在Windows 7 x64上也遇到了同样的问题,对于另一个在Windows 7 x86.0和@Kebian上的项目成员来说,它工作得很好-谢谢你们两位的意见。我想我已经设法解决了这个问题,并且诚实地说,我已经在一段时间前离开了这个问题。我希望你的回答能帮助其他陷入这个陷阱的人!再次感谢@您是从哪里获得libsasl.dll 64位的?