zlib1.dll Problem: Building OSE 3.0.0b2 on Win32

Postings relating to old VirtualBox pre-releases
Post Reply
csb
Posts: 32
Joined: 29. Sep 2008, 17:03

zlib1.dll Problem: Building OSE 3.0.0b2 on Win32

Post by csb »

Hi!
I managed, again, to compile the 3.0.0 beta 2 on windows, this time using the non-ssl libcurl.
http://curl.haxx.se/download/libcurl-7. ... 2-msvc.zip
http://curl.haxx.se/latest.cgi?curl=win32-devel-msvc

Now, I have problems with zlib1.dll when starting VirtualBox.exe or VBoxSvc.exe.
zlib1.dll is referenced, and the imports are referenced by number.
Using the zlib 1.2.3 binary from http://www.zlib.net/zlib123-dll.zip, import 55 is missing, the exports only go up 51.
Using the zlib 1.2.1.1429 from tools/win.x86/bin, import 73 is missing, the exports only go up to 65.
I am unable to find out how the zlib-exports are referenced during the build process ... as the numbered ones are used, using the exactly correct version of zlib1.dll is mandatory.
The build instructions only tell me
"the zlib library. Grab the sources from:
http://www.zlib.net/"

OK, there is src\libs\zlib-1.2.1 in the source tree, and out\win.x86\release\obj\VBox-zlib, and out\win.x86\release\lib\VBox-zlib.lib as import library.

Where is the dll? Its not generated?

There is SDK_VBOX_ZLIB_INCS
and in Config.kmk
SDK_VBOX_ZLIB = .
if1of ($(KBUILD_TARGET), win os2)
SDK_VBOX_ZLIB_INCS ?= $(PATH_ROOT)/src/libs/zlib-1.2.1
SDK_VBOX_ZLIB_LIBS ?= $(PATH_LIB)/VBox-zlib$(VBOX_SUFF_LIB)
...
So, the zlib-1.2.1 src delivered with the vbox src ist to be used, in all cases (on win).
But, no dll ...

System:
Visual Studio 2005 Pro / VC8 on Windows XP
Microsoft DirectX SDK 2008-08
Microsoft Platform SDK for Windows Server 2003 R2
WINDDK\3790.1830
Qt 4.5.1 (VS05)
mingw 5.1.4 Prev + gcc core, g++ 3.3.3
SDL-1.2.13-win32, SDL-devel-1.2.13-VC8
Win32OpenSSL-0_9_8k.exe
libcurl-7.18.0-win32-msvc.zip

Compiled zlib-1.2.3 as msc-dll. Fileversion: 1.2.2.0 / 1.2.3 (Properties disagree)
Again, exports only up to number 51.

Where do I get a zlib1.dll that works with virtual box 3.0.0b1?

Maybe the plan was to compile it statically?
Oh, I just found, the problem is not in virtual box, but in libcurl.dll (again) ... great.

well ...
http://www.geocities.com/gtalon51/Artic ... _2005.html
"4. Troubleshooting
Q: I get the error message: "Ordinal 55 can not be found in zlib1.dll"
A: You’re probably using a pre-built version of libcurl, roll your own using the above instructions or try and find a different binary."

Interestingly, there is no libcurl.dll in the binary PUEL distribution of 3.0.0b2 ...

OK, I FOUND IT.
After a lot of searching I found the following download(s) for libz:
zlib binary packages
Platform Where
Windows GnuWin32 project
http://sourceforge.net/project/showfile ... e_id=16861
which is version 1.2.3.2027.

Please add a note to the build instructions that libcurl.dll needs EXACTLY this version of zlib1.dll.
Unless there is a static distribution of libcurl.

Thanks,
Sebastian
csb
Posts: 32
Joined: 29. Sep 2008, 17:03

Re: zlib1.dll Problem: Building OSE 3.0.0b2 on Win32

Post by csb »

By the way:
Still unable to start any virtual machine, see
http://forums.virtualbox.org/viewtopic.php?f=15&t=18836

And, yes, I'm using the non-ssl version of libcurl this time.
Maybe I'm still using a different one than you do - please specify the exact version.
And whether you link statically or dynamically against libcurl.

Yours,
Sebastian
frank
Oracle Corporation
Posts: 3362
Joined: 7. Jun 2007, 09:11
Primary OS: Debian Sid
VBox Version: PUEL
Guest OSses: Linux, Windows
Location: Dresden, Germany
Contact:

Re: zlib1.dll Problem: Building OSE 3.0.0b2 on Win32

Post by frank »

Actually I used zlib from sourceforge as well but I don't remember which version it was. I just recompiled VBox-OSE on Windows and was able to successfully start a VM.

Are you sure that you copied libcurl.dll, libeay32.dll, libssl32.dll, openldap.dll ssleay32.dll and zlib1.dll into the VBox bin/ directory (the same directory where VirtualBox.exe is copied to)?
csb
Posts: 32
Joined: 29. Sep 2008, 17:03

Re: zlib1.dll Problem: Building OSE 3.0.0b2 on Win32

Post by csb »

Executive Summary:
As I found out at the end of this post, vboxc.dll did not register by calling regsvr32 on one system, while doing so on another. Manually copying the reg info made it work.


Hi!
Yes, I copied them into the bin dir. Also checked with VS depends.exe that exactly these versions of the dlls are loaded by both virtualbox and vboxsvc. The non-starting vms rather seem to be a COM problem, not dlls themselves?

Is it possible that the comregister.cmd is missing some statements? Some new dll, which needs to be registered as well?
Of course, having run about every version of vbox from 1.6.x to 3.0.0bx on my machine, left-over registrations may be a problem ... I'll try on a vmware virtual machine.

comregister.cmd:
[comments]
VBoxSVC.exe /ReregServer

regsvr32 /s /u VBoxC.dll
regsvr32 /s VBoxC.dll

On the vmware - AH, it works!
(gets astoundingly far, vbox vm crashes only when winxp boot switches to "second" boot screen (protected mode?))
So, obviously, it is registry problem ... yet, I have removed/renamed all old versions of vboxsvc.exe etc. ... I'm quite sure it was the right one that is registered ...

I'll clean up the registry as far as I can. Unfortunately, running vm software is one of the few things you can't really do in a vm ....
Do you know any way to find out which class was "not registered" REGDB_E_CLASSNOTREG?
Maybe some windows spying tool ...
I regularly check that vboxsvc is *not* running when it shouldn't.

What the ... on the "host" system:
vbomanage list vms
symbol SUPGetSymbolR0 missing in DLL VBoxRT.dll ..
well, the symbol IS missing in VBoxRT.dll ...
and according to depends.exe, vboxmanage does not try to import it.
I'm unable to grep SUPGetSymbolR0 in any file in release/bin ...
No vbox* in system32, nor anywhere else to be found.
vboxmanage works on the "vm" system.

Any way supunistall/supinstall is broken?

cleaning up the registry:
I did not find anything interesting ("search vbox") except the correct vboxsvc registration - removed
A very old non-existing vboxc.dll registration? 1.3.8 - removed
but no current one?
Services/eventlog/system/vboxusbflt - removed
correct services/vboxdrv - removed
vboxtap

now, virtualbox.exe is unable to create "its" com object. good.
comregister.cmd
virtualbox starts, but cannot start any vm - CLASSNOTREG.
supinstall - FAILED - rc=-1 - probably a reboot needed b/c of manual registry edit.
registry now contains:
HKEY_CLASSES_ROOT\CLSID\{B1A7A4F2-47B9-4A1E-82B2-07CCD5323C3F} --> vboxsvc.exe
HKEY_CLASSES_ROOT\TypeLib\{46137EEC-703B-4FE5-AFD4-7C9BBBBA0259} --> vboxsvc.exe
again, NO vboxC.dll ...

BUT in the vm, there is vboxc.dll
HKEY_CLASSES_ROOT\CLSID\{3C02F46D-C9D2-4f11-A384-53F0CF917214} --> vboxc.dll
HKEY_CLASSES_ROOT\TypeLib\{1EA703AF-A150-4FDD-83DC-C07A7A460C7E} -> system32/vboxnetfltnotify.dll
HKEY_CLASSES_ROOT\TypeLib\{46137EEC-703B-4FE5-AFD4-7C9BBBBA0259} -> vboxc.dll

On the host, when calling regsvr32 VBoxC.dll, *no* success message is printed!

Manually registered vboxc.dll - WORKS! (except for the kernel driver I removed above).
So, all this stuff ... b/c some dll does not like to register?

For the moment, I give up ...
Thanks,
Sebastian
csb
Posts: 32
Joined: 29. Sep 2008, 17:03

Re: zlib1.dll Problem: Building OSE 3.0.0b2 on Win32

Post by csb »

Two interesting notes concerning regsvr32 VBoxC.dll
- return code for "regsvr32 VBoxC.dll" is 3 - I have found no information what this means
- calling "c:\winnt\system32\regsvr32.exe C:\home\Projekte\VirtualBox\VirtualBox-3.0.0b2-VC8\bin\VBoxC.dll" with full path succeeds!

Well, I'll use
regsvr32 /s /u %CD%\VBoxC.dll
regsvr32 /s %CD%\VBoxC.dll
in comregister.cmd, now ...

Sebastian
csb
Posts: 32
Joined: 29. Sep 2008, 17:03

Re: zlib1.dll Problem: Building OSE 3.0.0b2 on Win32

Post by csb »

C:\home\Projekte\VirtualBox\VirtualBox-3.0.0b2-VC8\bin>strace regsvr32 VBoxC.dll

--- Process 3096, exception C0000138 at 7C9766C6

http://support.microsoft.com/kb/262602

"This behavior can occur if an older or mismatched dynamic-link library (DLL) in the system path is loaded by the program instead of the correct DLL.

This issue has occurred with duplicate files from older versions of Microsoft C++ installed in different folders. This error occurred with a third-party program that hooked itself into the Explorer.exe shell. "
Post Reply