Pergunta

Não consigo compilar mod_dontdothat no Windows.Alguém conseguiu isso?

Editar:

Tentei compilar o arquivo de acordo com o leia-me do site e tentei adicionar bibliotecas extras para reduzir os erros de link.Eu tenho o seguinte instalado:

  1. Apache2.2.9
  2. Estúdio Visual 2008
  3. ActivePerl
  4. apxs-win32 do ApacheLounge
  5. Bibliotecas e cabeçalhos do Subversion

Eu executo a seguinte linha de comando:

C:\Program Files\Apache Software Foundation\Apache2.2\bin>apxs -c -I ..\include\
svn_config.h -L ..\lib -L C:\Progra~1\Micros~1.0\VC\lib -l apr-1.lib -l aprutil-
1.lib -l svn_subr-1.lib -l libapr-1.lib -l libaprutil-1.lib -l libhttpd.lib -l l
ibsvn_subr-1.lib -l mod_dav.lib mod_dontdothat.c

Então recebo os seguintes erros:

cl  /nologo /MD /W3 /O2 /D WIN32 /D _WINDOWS /D NDEBUG    -I"C:\PROGRA~1\APACHE~
1\Apache2.2\include"  /I"..\include\svn_config.h"  /c /Fomod_dontdothat.lo mod_d
ontdothat.c
mod_dontdothat.c
link kernel32.lib /nologo /subsystem:windows /dll /machine:I386 /libpath:"C:\PRO
GRA~1\APACHE~1\Apache2.2\lib" /out:mod_dontdothat.so  /libpath:"..\lib"  /libpat
h:"C:\Progra~1\Micros~1.0\VC\lib"  apr-1.lib aprutil-1.lib svn_subr-1.lib libapr
-1.lib libaprutil-1.lib libhttpd.lib libsvn_subr-1.lib mod_dav.lib   mod_dontdot
hat.lo
   Creating library mod_dontdothat.lib and object mod_dontdothat.exp
mod_dontdothat.lo : error LNK2019: unresolved external symbol _dav_svn_split_uri
@32 referenced in function _is_this_legal
svn_subr-1.lib(io.obj) : error LNK2001: unresolved external symbol __imp__libint
l_dgettext
svn_subr-1.lib(subst.obj) : error LNK2001: unresolved external symbol __imp__lib
intl_dgettext
svn_subr-1.lib(config_auth.obj) : error LNK2001: unresolved external symbol __im
p__libintl_dgettext
svn_subr-1.lib(time.obj) : error LNK2001: unresolved external symbol __imp__libi
ntl_dgettext
svn_subr-1.lib(nls.obj) : error LNK2001: unresolved external symbol __imp__libin
tl_dgettext
svn_subr-1.lib(dso.obj) : error LNK2001: unresolved external symbol __imp__libin
tl_dgettext
svn_subr-1.lib(path.obj) : error LNK2001: unresolved external symbol __imp__libi
ntl_dgettext
svn_subr-1.lib(prompt.obj) : error LNK2001: unresolved external symbol __imp__li
bintl_dgettext
svn_subr-1.lib(error.obj) : error LNK2019: unresolved external symbol __imp__lib
intl_dgettext referenced in function _print_error
svn_subr-1.lib(config.obj) : error LNK2001: unresolved external symbol __imp__li
bintl_dgettext
svn_subr-1.lib(utf.obj) : error LNK2001: unresolved external symbol __imp__libin
tl_dgettext
svn_subr-1.lib(cmdline.obj) : error LNK2001: unresolved external symbol __imp__l
ibintl_dgettext
svn_subr-1.lib(utf.obj) : error LNK2019: unresolved external symbol __imp__libin
tl_sprintf referenced in function _fuzzy_escape
svn_subr-1.lib(path.obj) : error LNK2001: unresolved external symbol __imp__libi
ntl_sprintf
svn_subr-1.lib(cmdline.obj) : error LNK2019: unresolved external symbol __imp__l
ibintl_fprintf referenced in function _svn_cmdline_init
svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp
__SHGetFolderPathA@20 referenced in function _svn_config__win_config_path
svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp
__SHGetFolderPathW@20 referenced in function _svn_config__win_config_path
svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp
__RegCloseKey@4 referenced in function _svn_config__parse_registry
svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp
__RegEnumKeyExA@32 referenced in function _svn_config__parse_registry
svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp
__RegOpenKeyExA@20 referenced in function _svn_config__parse_registry
svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp
__RegQueryValueExA@24 referenced in function _parse_section
svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp
__RegEnumValueA@32 referenced in function _parse_section
svn_subr-1.lib(win32_xlate.obj) : error LNK2019: unresolved external symbol __im
p__CoUninitialize@0 referenced in function _svn_subr__win32_xlate_open
svn_subr-1.lib(win32_xlate.obj) : error LNK2019: unresolved external symbol __im
p__CoInitializeEx@8 referenced in function _svn_subr__win32_xlate_open
svn_subr-1.lib(win32_xlate.obj) : error LNK2019: unresolved external symbol __im
p__CoCreateInstance@20 referenced in function _get_page_id_from_name
svn_subr-1.lib(nls.obj) : error LNK2019: unresolved external symbol __imp__libin
tl_bindtextdomain referenced in function _svn_nls_init
svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _inflate
referenced in function _read_handler_gz
svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _inflateI
nit_ referenced in function _read_handler_gz
svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _deflate
referenced in function _write_handler_gz
svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _deflateI
nit_ referenced in function _write_handler_gz
svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _deflateE
nd referenced in function _close_handler_gz
svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _inflateE
nd referenced in function _close_handler_gz
mod_dontdothat.so : fatal error LNK1120: 21 unresolved externals
apxs:Error: Command failed with rc=6291456
.

Não sou muito guru de C, então qualquer ajuda para encontrar esses símbolos externos não resolvidos será muito apreciada!

Foi útil?

Solução

Consegui compilar o módulo.Pré-requisitos:

  • Apache2.2.11
  • apxs-win32 de www.apachelounge.com
  • Estúdio Visual 2005
  • Perl ativo 5.8.8 (você precisa de perl para instalação do apxs-win32)

Aqui está um guia passo a passo.Baixe estes pacotes:

Descompacte o pacote dev para c:\temp\svn e o outro pacote para c:\temp\svn-src e a mod_dontdothat arquivos para C:\Temp\dontdothat.

Uma das dependências mod_dontdothat módulo é mod_dav_svn módulo.Infelizmente você encontrará o mod_dav_svn binário apenas como uma biblioteca compartilhada (DLL).Você não pode vincular uma DLL.Portanto, o primeiro passo é construir uma estática mod_dav_svn biblioteca:

cd C:\Temp\svn-src\subversion\mod_dav_svn
apxs -c -I ..\include  -L C:\Temp\svn\lib -l libsvn_delta-1.lib -l libsvn_diff-1.lib -l libsvn_fs-1.lib -l libsvn_fs_base-1.lib -l libsvn_fs_fs-1.lib -l libsvn_fs_util-1.lib -l libsvn_repos-1.lib -l libsvn_subr-1.lib -l libapr-1.lib -l libaprutil-1.lib -l libhttpd.lib -l mod_dav.lib -l xml.lib  -n mod_dav_svn mod_dav_svn.c activity.c authz.c deadprops.c liveprops.c lock.c merge.c mirror.c repos.c util.c version.c reports\dated-rev.c reports\file-revs.c reports\get-locations.c reports\get-location-segments.c reports\get-locks.c reports\log.c reports\mergeinfo.c reports\replay.c reports\update.c

A chamada apxs imprimirá os comandos que executa.O último comando é uma chamada de link que cria a DLL.Copie-o, substitua "link" por "lib", remova o parâmetro "/dll" e altere o nome do arquivo do parâmetro "out" para "libmod_dav_svn.lib".Você deve obter algo semelhante a:

lib kernel32.lib /nologo /subsystem:windows /machine:I386 /libpath:"C:\PROGRA~1\APACHE~1\Apache2.2\lib" /out:libmod_dav_svn.lib  /libpath:"C:\Temp\svn\lib"  libsvn_delta-1.lib libsvn_diff-1.lib libsvn_fs-1.lib libsvn_fs_base-1.lib libsvn_fs_fs-1.lib libsvn_fs_util-1.lib libsvn_repos-1.lib libsvn_subr-1.lib libapr-1.lib libaprutil-1.lib libhttpd.lib mod_dav.lib xml.lib   reports\update.lo reports\replay.lo reports\mergeinfo.lo reports\log.lo reports\get-locks.lo reports\get-location-segments.lo reports\get-locations.lo reports\file-revs.lo reports\dated-rev.lo version.lo util.lo repos.lo mirror.lo merge.lo lock.lo liveprops.lo deadprops.lo authz.lo activity.lo mod_dav_svn.lo

Você receberá alguns avisos de link.Você pode ignorá-los.Copie o libmod_dav_svn.lib para o mod_dontdothat diretório.Agora inicie o processo de compilação para mod_dontdothat:

C:\Temp\dontdothat
apxs -c -I C:\Temp\svn\include -L C:\Temp\svn\lib -l libsvn_subr-1.lib -l libapr-1.lib -l libaprutil-1.lib -l libhttpd.lib -l mod_dav.lib -l xml.lib -l libmod_dav_svn.lib    mod_dontdothat.c
apxs -i -n dontdothat mod_dontdothat.so

Isso deve funcionar.

Outras dicas

Pesquisando no Google eu tenho

  • mod_dav_svn.lib para _dav_svn_split_uri
  • intl3_svn.lib para todas as coisas _libintl
  • shell32.lib para SHGetFolderPath
  • advapi32.lib para Regcoisas istry
  • ole32.lib para CoInitialize e é algo assim
  • inflate e deflate cheira como zlib1.lib ou algo assim

Espero que ajude.

Obrigado por revisar a pergunta.

Parece um problema definitivo do vinculador.Vejo que o primeiro símbolo indefinido está relacionado ao webdav.Tem certeza de que tem aquela biblioteca no lugar certo?Vejo que você deu um longo caminho com muitas bibliotecas svn, talvez seja possível que você tenha esquecido apenas uma?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top