Re: Residual build errors on MinGW and MSVC++

From: Robert Collins <robertc@dont-contact.us>
Date: 10 Aug 2003 08:59:51 +1000

On Sat, 2003-08-09 at 20:44, Serassio Guido wrote:
> Hi Robert,
>
> There are some residual build errors on Windows:
>
> The store_dir_ufs.cc error is still here:
>
> Compiling...
> store_dir_ufs.cc
> c:\work\nt-3.0\src\fs\ufs\store_dir_ufs.cc(1019) : error C2664:
> 'file_write' : cannot convert parameter 7 from 'void (void *)' to 'void
> (__cdecl *)(void *)'
> None of the functions with this name in scope match the target type
> store_io_ufs.cc
>
> I have made some test/investigation: it seems like that the FreeObject<>
> linkage is not compatibile with what MSVC expects here: it don't have the
> expected __cdecl calling convention, and trying to force it in the protos.h
> declaration changed nothing.
>
> FreeObject<> is used only here and in store_dir_coss.cc: it's possible to
> change something in the coding logic to accomodate this ?
Yes - copy the template to each file it's used, and make it a normal,
static function there.
> At link time I have got this:
>
> Linking...
> ACLStringData.obj : error LNK2001: unresolved external symbol "int __cdecl
> splaystrcmp(char * const &,char * const &)" (?splaystrcmp@@YAHABQAD0@Z)
> ACLUserData.obj : error LNK2001: unresolved external symbol "int __cdecl
> splaystrcmp(char * const &,char * const &)" (?splaystrcmp@@YAHABQAD0@Z)
> ACLUserData.obj : error LNK2001: unresolved external symbol "int __cdecl
> splaystrcasecmp(char * const &,char * const &)" (?splaystrcasecmp@@YAHABQAD0@Z)
> Debug/squid.exe : fatal error LNK1120: 2 unresolved externals
> Error executing link.exe.
>
> But splaystrcmp and splaystrcasecmp are defined. What is this ?
Some BS with MSVC and templates. b****r. I've detemplatized these.

I'd wager that the cause is because we reference them but never call
them - it may be that MSVC thus never instantiates them. I'm guessing it
may be because we don't directly call them, only take their address.

> Building nt branch on MSYS + MinGW I have got the following strange error:
>
> cc1plus.exe: warnings being treated as errors
> digest/auth_digest.cc: In member function `virtual void
> digest_request_h::authenticate(request_t*, RefCount<ConnStateData>,
> http_hdr_type)':
> digest/auth_digest.cc:715: warning: aggregate has a partly bracketed
> initializer
> digest/auth_digest.cc:715: warning: aggregate has a partly bracketed
> initializer
> make[3]: *** [digest/auth_digest.o] Error 1

Sounds like mingw have a 'funny' struct definition for in_addr. Perhaps a memset is best for now.

Cheers,
Rob

-- 
GPG key available at: <http://members.aardvark.net.au/lifeless/keys.txt>.

Received on Sat Aug 09 2003 - 16:59:48 MDT

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:20:27 MST