[Prev][Next][Index][Thread]

Re: Some ideas on: Problem compiling 1B3a under VC++ on NT 4.0 - anyone else seen this?



> The library compile runs through several of the sub- projects with only a few warnings and then VC++ gives me the following error and quits:
> 
> 
> Linking...
>    Creating library ../../../Bin/wwwrules.lib and object ../../../Bin/wwwrules.exp
> HTProxy.obj : error LNK2001: unresolved external symbol _HTAuthFilter
> ../../../Bin/Debug/wwwrules.dll : fatal error LNK1120: 1 unresolved externals
> Error executing link.exe.
> msvc_40.dll - 2 error(s), 0 warning(s)

The problem stems from this function in HTProxy.c
PUBLIC BOOL HTProxy_add (const char * access, const char * proxy)
{
    /*
    **  If this is the first time here then also add a before filter to handle
    **  proxy authentication and the normal AA after filter as well.
    **  These filters will be removed if we remove all proxies again.
    */
    if (!proxies) {
        proxies = HTList_new();
        HTNetCall_addBefore(HTAA_proxyBeforeFilter, NULL, 0);
!!!     HTNetCall_addAfter(HTAuthFilter, NULL, HT_NO_PROXY_ACCESS);
    }
    return add_object(proxies, access, proxy);
}

I believe that you can comment out this line as HTAuthFilter is added to 
the netcalls in the call chain HTProfile_newClient->HTNetInit->
HTAfterInit->HTNetCall_addAfter(HTAuthFilter, NULL, HT_NO_ACCESS);

HTAuthFilter is part of the high-level library wwwapp which uses many of 
the middle-level libraries like wwwrules. During the build process, MSVC 
creates lib files for each dll. These lib files are used to resolve 
externals in subsequent dlls/exes. Using this model, it is impossible to 
create interdependent dlls. Which one do you build first? How does it 
resolve the symbols defined in the other? wwwrules needed a symbol from 
wwwapp, which wasn't built yet, and couldn't be built without first 
building wwwrules. Catch 22.

> I usually work on single level projects so I'm a bit fuzzy how symbols get defined and made visible among sub-projects in a complex project like this.

As far as I know, subprojects don't mean anything to the build process 
except that the product of the subproject is a depnendency in this 
project. There is no implicit linkage between the two.

-eric

PS. I see no linebreaks in your mail so the reply text may be a little 
bit ascew. Are you using the Microsoft mailer?