httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christopher H. Laco" <cl...@chrislaco.com>
Subject Error linking to ApacheCore.lib in win32
Date Tue, 25 Jan 2005 00:51:52 GMT
My apologies because this is probably not the correct list, but I'm 
looking for someone intimate with C and the httpd internals/exports.

I didn't figured I'd get much of an anwser from users@ and this isn't 
exactly a mod_* question either.

--

I'm trying to compile a whole slew of things for a new install on my
laptop for dev, including libxml2, libxslt, mod_perl, and AxKit.

Everything is done and passed all the tests with the exception of AxKit.
What does this have to do with Apache you ask? Well, I'm getting errors
linking against ApacheCore.lib in my 1.3.33 Apache install. This is the
packages binary install from apache.org.

The error is:

axconfig.obj : error LNK2001: unresolved external symbol _ap_invoke_handler
blib\arch\auto\AxKit\AxKit.dll : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code
'0x460'
Stop.


Now, the AxKit Makefile has the full path to ApacheCore.lib in it;
without spaces. Removing that entry produces more errors, so it's
definately getting linked to.

The relevant portion in AxKits' axconfig.c is:

/* ----- axconfig.c ----- */
static int axkit_handler(request_rec *r)
{
     int retval;
     SV * handler_sv;
     SV * cfg;
     SV * debuglevel;
     SV * errorlevel;

     if (S_ISDIR(r->finfo.st_mode)) {
         axkit_dir_config * cfg = (axkit_dir_config
*)ap_get_module_config(r->per_dir_config, &XS_AxKit);
         if (!cfg || cfg->handle_dirs != 1) {
             return DECLINED;
         }
     }

     handler_sv = newSVpv("AxKit::fast_handler", 0);

     cfg = perl_get_sv("AxKit::Cfg", FALSE);
     debuglevel = perl_get_sv("AxKit::DebugLevel", FALSE);
     errorlevel = perl_get_sv("Error::Debug", FALSE);

     ENTER;

     save_item(cfg);
     save_item(debuglevel);
     save_item(errorlevel);

     retval = perl_call_handler(handler_sv, (request_rec *)r, Nullav);

     LEAVE;

     SvREFCNT_dec(handler_sv);

     if (retval == DECLINED) {
         r->handler = "default-handler";
         return ap_invoke_handler(r);
     }

     return retval;
}
/* ----- axconfig.c ----- */



I've also done a dumpbin on ApacheCore.lib and ApacheCore.dll to confirm
that ap_invoke_handler is indeed exported.

The Microsoft KB has a million and one reasons that cause LNK1120 error,
and I don't know a damn thing about C.

Any C guru Apache internals god out there have any ideas?

Thanks,
-=Chris


Mime
View raw message