Windows 7 OpenLDAP Curl DLL Dependency Hell

3

I really hope someone can be of help to me because this problem has me totally stuck and frustrated.

Yesterday I installed a fresh and shiney new Windows 7 x64 onto a development box.

I got VS2008 installed, Tortoise SVN, did a checkout, compiled my currently project, all fine and dandy.

But when I go to run (either F5 in VS or just running the exe from the shell) I get a dialog box that looks like this:

Sadness
(source: aliparr.net)

So I fiddle around and can't see an obvious problem. I bust out depends.exe, thinking maybe there's a dll missing, and I get this:

Eeek
(source: aliparr.net)

So I play, finding different versions of gpsvc.dll and ishims.dll and putting them in with the .exe, No luck.

If I do a profile in depends (which follows the Output window of vs), I get this:

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

So it seems openldap.dll is the last thing to get loaded before it all goes wrong. I require this dll because I use cURL within the application to do a little JSON communicating...

I've tried playing with moving files and trying differing dlls, but honestly I'm acting a little blind here. Can someone please help or point me in the right direction?

It should be noted these dlls and setup work fine in Windows Vista x64 and x86 - is this a Windows 7 thing?

Massive thanks in advance, I might still have some hair left after this is done.


Edit

I've now realised curl.exe dies in exactly the same way with openldap.dll - I guess some windows 7 issue? Can you/does anyone have a curl without the dependency on openldap? Is there another lightweight C/C++ library out there that'll let me fetch a document over http and do the odd http POST ?

Thanks

windows-7
curl
openldap
dll
asked on Stack Overflow Oct 21, 2009 by Ali Parr • edited May 2, 2019 by Glorfindel

6 Answers

3

I had a very similar problem myself: I was developing a C program (using the MinGW gcc compiler) which used the curl library to do http GET operations. I tested it on Windows XP (32-bit) and Windows 7 (64-bit). My program was working in Windows XP, but in Windows 7 it crashed with the same 0xc000007b error message as the OP got.

I used Dependency Walker on a down-stripped program (with only one call to the curl library:curl_easy_init()). I essentially got the same log as yours, with OPENLDAP.DLL as the last successfully loaded module before the crash.

However, it seems my program crashed upon loading LIBSASL.DLL (which was the next module loaded according to the log from Dependency Walker run on Windows XP).

When looking again in the log from Dependency Walker on Windows 7, LIBSASL.DLL indeed shows up a x64 module. I managed to get my program to run by copying a 32-bit version of the DLL file from another application on my harddisk to my program's directory.

Hopefully this will work for other people having similar problems (also for the OP if the problem still wasn't resolved after these years). If copying a 32-bit version of LIBSADL.DLL to your program's directory doesn't help, another module might cause the crash. Run Dependency Walker on both the 32- and 64-bit systems and look up the module name from the log of the successful run.

answered on Stack Overflow Jan 29, 2011 by Anonym Mus
1

I cannot answer your questions completely, I've compiled libcurl on Windows 7 Professional x64 and I don't have any issues. Although I haven't compiled it with OpenLDAP support so I suppose that's where the issue lies.

Regarding the IEShims.dll, Dependency Walker usually reports this as a missing module. Can't remember the exact reason but it was something about loading it dynamically when it's not found in %Path%.

If you however need to debug this and are on Windows 7 then try doing a hard link from %ProgramFiles%\Internet Explorer\IEShims.dll to %windir%.

Although, I see on the screen dump that it sure looks like Spree.exe isn't loaded as a x64 binary, which could very well be it. There's a difference in loading exported functions and piping or exec() a binary, the first mentioned requires that the architecture is the same for both the importer and exporter.

1

I've also found that mine is trying to load a 64 bit version of LIBSASL.DLL - the one that came with my 64 bit Tortoise distribution. I also only need curl for pulling a bit of JSON data. I think the best solution is going to be to rebuild libcurl from source and exclude the LDAP since I don't need it anyway.

answered on Stack Overflow May 16, 2011 by Kebian
0

Similar issue here. DLL dependents GPSVC.DLL and MSVCR90.DLL.

I managed to get rid of IESHIMS.dll by setting my environment variables path to C:\Program Files (x86)\Internet Explorer. Surely that shouldn't need to be done!

Is there a fix to this yet?

answered on Stack Overflow Apr 16, 2010 by HGPB
0

libsasl requires ieshims.dll, if you don't have sasl support in openldap, then ieshims.dll won't be required.

answered on Stack Overflow Sep 22, 2011 by Pierre
0

If you use windows x64 you have to copy your dll to c:/windows/SysWoW64. I have had the same problem when i wanted use pthreads in windows os 8. When I was copied pthreads dll to SysWow64 the program was run sucessfully.

answered on Stack Overflow Apr 10, 2013 by Marcin

User contributions licensed under CC BY-SA 3.0