2 Stimmen

Wie kompiliere ich mod_dontdothat unter Windows?

Ich scheine mod_dontdothat unter Windows nicht kompilieren zu können. Hat es jemand geschafft, dies zu erreichen?

Editar:

Ich habe versucht, die Datei gemäß der Readme-Datei auf der Website zu kompilieren, und ich habe versucht, zusätzliche Bibliotheken hinzuzufügen, um die Link-Fehler zu reduzieren. Ich habe die folgenden installiert:

  1. Apache 2.2.9
  2. Visual Studio 2008
  3. ActivePerl
  4. apxs-win32 von ApacheLounge
  5. Subversion-Bibliotheken und -Kopfzeilen

Ich führe die folgende Befehlszeile aus:

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

Dann erhalte ich die folgenden Fehler:

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
.

Ich bin kein großer C-Guru, daher wäre ich für jede Hilfe bei der Suche nach diesen ungelösten externen Symbolen sehr dankbar!

7voto

Eduard Wirch Punkte 9548

Es ist mir gelungen, das Modul zu kompilieren. Voraussetzungen:

  • Apache 2.2.11
  • apxs-win32 von www.apachelounge.com
  • Visual Studio 2005
  • Aktives Perl 5.8.8 (Sie benötigen Perl für die Installation von apxs-win32)

Hier finden Sie eine schrittweise Anleitung. Laden Sie diese Pakete herunter:

Entpacken Sie das Dev-Paket nach c:\temp\svn und das andere Paket an c:\temp\svn-src とのことです。 mod_dontdothat Dateien zu C:\Temp\dontdothat .

Eine der Abhängigkeiten von mod_dontdothat Modul ist mod_dav_svn Modul. Leider finden Sie die mod_dav_svn Binärdatei nur als gemeinsam genutzte Bibliothek (DLL). Sie können nicht gegen eine DLL linken. Der erste Schritt ist also die Erstellung einer statischen mod_dav_svn Bibliothek:

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

Der apxs-Aufruf gibt die ausgeführten Befehle aus. Der letzte Befehl ist ein Link-Aufruf, mit dem die DLL erstellt wird. Kopieren Sie ihn, ersetzen Sie "link" durch "lib", entfernen Sie den Parameter "/dll" und ändern Sie den Dateinamen des Parameters "out" in " libmod_dav_svn.lib ". Sie sollten etwas Ähnliches erhalten wie:

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

Sie werden einige Link-Warnungen erhalten. Sie können sie ignorieren. Kopieren Sie die libmod_dav_svn.lib zum mod_dontdothat Verzeichnis. Starten Sie nun den Kompilierungsprozess für 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

Damit sollte es klappen.

3voto

agnul Punkte 11830

Wenn ich herumgoogle, finde ich

  • mod_dav_svn.lib für _dav_svn_split_uri
  • intl3_svn.lib für alle Dinge _libintl
  • shell32.lib für SHGetFolderPath
  • advapi32.lib für Reg Handwerkszeug
  • ole32.lib für CoInitialize und seinesgleichen
  • inflate et deflate riechen wie zlib1.lib oder so ähnlich

Ich hoffe, das hilft.

1voto

Jason Dagit Punkte 13354

Vielen Dank für die Überarbeitung der Frage.

Es sieht nach einem eindeutigen Linker-Problem aus. Ich sehe, dass das erste undefinierte Symbol mit webdav verbunden ist. Sind Sie sicher, dass Sie diese Bibliothek an der richtigen Stelle haben? Ich sehe, Sie geben einen schönen langen Pfad mit vielen svn Bibliotheken, vielleicht ist es möglich, dass Sie nur eine übersehen haben?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X