2

Windowsでmod_dontdothatをコンパイルできないようです。誰かがこれを達成することができましたか?

編集:

サイトのreadmeに従ってファイルをコンパイルし、リンクエラーを減らすためにライブラリを追加しようとしました。私は以下をインストールしました:

  1. Apache 2.2.9
  2. Visual Studio 2008
  3. ActivePerl
  4. ApacheLoungeのapxs-win32
  5. Subversionライブラリとヘッダー

次のコマンドラインを実行します。

C:\ Program Files \ Apache Software Foundation \ Apache2.2 \ bin> apxs -c -I .. \ include \
svn_config.h -L .. \ lib -LC:\ 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 -ll
ibsvn_subr-1.lib -l mod_dav.lib mod_dontdothat.c

次に、次のエラーが発生します。

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
リンク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:\ Program〜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
   ライブラリmod_dontdothat.libとオブジェクトmod_dontdothat.expを作成します
mod_dontdothat.lo:エラーLNK2019:未解決の外部シンボル_dav_svn_split_uri
関数_is_this_legalで参照される@32
svn_subr-1.lib(io.obj):エラーLNK2001:未解決の外部シンボル__imp__libint
l_dgettext
svn_subr-1.lib(subst.obj):エラーLNK2001:未解決の外部シンボル__imp__lib
intl_dgettext
svn_subr-1.lib(config_auth.obj):エラーLNK2001:未解決の外部シンボル__im
p__libintl_dgettext
svn_subr-1.lib(time.obj):エラーLNK2001:未解決の外部シンボル__imp__libi
ntl_dgettext
svn_subr-1.lib(nls.obj):エラーLNK2001:未解決の外部シンボル__imp__libin
tl_dgettext
svn_subr-1.lib(dso.obj):エラーLNK2001:未解決の外部シンボル__imp__libin
tl_dgettext
svn_subr-1.lib(path.obj):エラーLNK2001:未解決の外部シンボル__imp__libi
ntl_dgettext
svn_subr-1.lib(prompt.obj):エラーLNK2001:未解決の外部シンボル__imp__li
bintl_dgettext
svn_subr-1.lib(error.obj):エラーLNK2019:未解決の外部シンボル__imp__lib
関数_print_errorで参照されるintl_dgettext
svn_subr-1.lib(config.obj):エラーLNK2001:未解決の外部シンボル__imp__li
bintl_dgettext
svn_subr-1.lib(utf.obj):エラーLNK2001:未解決の外部シンボル__imp__libin
tl_dgettext
svn_subr-1.lib(cmdline.obj):エラーLNK2001:未解決の外部シンボル__imp__l
ibintl_dgettext
svn_subr-1.lib(utf.obj):エラーLNK2019:未解決の外部シンボル__imp__libin
関数_fuzzy_escapeで参照されるtl_sprintf
svn_subr-1.lib(path.obj):エラーLNK2001:未解決の外部シンボル__imp__libi
ntl_sprintf
svn_subr-1.lib(cmdline.obj):エラーLNK2019:未解決の外部シンボル__imp__l
関数_svn_cmdline_initで参照されるibintl_fprintf
svn_subr-1.lib(config_win.obj):エラーLNK2019:未解決の外部シンボル__imp
関数_svn_config__win_config_pathで参照される__SHGetFolderPathA@20
svn_subr-1.lib(config_win.obj):エラーLNK2019:未解決の外部シンボル__imp
関数_svn_config__win_config_pathで参照される__SHGetFolderPathW@20
svn_subr-1.lib(config_win.obj):エラーLNK2019:未解決の外部シンボル__imp
関数_svn_config__parse_registryで参照される__RegCloseKey@4
svn_subr-1.lib(config_win.obj):エラーLNK2019:未解決の外部シンボル__imp
関数_svn_config__parse_registryで参照される__RegEnumKeyExA@32
svn_subr-1.lib(config_win.obj):エラーLNK2019:未解決の外部シンボル__imp
関数_svn_config__parse_registryで参照される__RegOpenKeyExA@20
svn_subr-1.lib(config_win.obj):エラーLNK2019:未解決の外部シンボル__imp
関数_parse_sectionで参照される__RegQueryValueExA@24
svn_subr-1.lib(config_win.obj):エラーLNK2019:未解決の外部シンボル__imp
関数_parse_sectionで参照される__RegEnumValueA@32
svn_subr-1.lib(win32_xlate.obj):エラーLNK2019:未解決の外部シンボル__im
関数_svn_subr__win32_xlate_openで参照されるp__CoUninitialize@0
svn_subr-1.lib(win32_xlate.obj):エラーLNK2019:未解決の外部シンボル__im
関数_svn_subr__win32_xlate_openで参照されるp__CoInitializeEx@8
svn_subr-1.lib(win32_xlate.obj):エラーLNK2019:未解決の外部シンボル__im
関数_get_page_id_from_nameで参照されるp__CoCreateInstance@20
svn_subr-1.lib(nls.obj):エラーLNK2019:未解決の外部シンボル__imp__libin
関数_svn_nls_initで参照されるtl_bindtextdomain
svn_subr-1.lib(stream.obj):エラーLNK2019:未解決の外部シンボル_inflate
関数_read_handler_gzで参照されます
svn_subr-1.lib(stream.obj):エラーLNK2019:未解決の外部シンボル_inflateI
関数_read_handler_gzで参照されるnit_
svn_subr-1.lib(stream.obj):エラーLNK2019:未解決の外部シンボル_deflate
関数_write_handler_gzで参照されます
svn_subr-1.lib(stream.obj):エラーLNK2019:未解決の外部シンボル_deflateI
関数_write_handler_gzで参照されるnit_
svn_subr-1.lib(stream.obj):エラーLNK2019:未解決の外部シンボル_deflateE
関数_close_handler_gzで参照されるnd
svn_subr-1.lib(stream.obj):エラーLNK2019:未解決の外部シンボル_inflateE
関数_close_handler_gzで参照されるnd
mod_dontdothat.so:致命的なエラーLNK1120:21の未解決の外観
apxs:Error:コマンドがrc=6291456で失敗しました
。

私はCの第一人者ではないので、これらの未解決の外部シンボルを見つけるのに役立つことは大いにありがたいです!

4

3 に答える 3

7

モジュールのコンパイルに成功しました。前提条件:

  • アパッチ 2.2.11
  • www.apachelounge.comの apxs -win32
  • ビジュアル スタジオ 2005
  • Active Perl 5.8.8 (apxs-win32 のインストールには perl が必要です)

これがステップバイステップのガイドです。次のパッケージをダウンロードします。

dev パッケージをc:\temp\svnに、他のパッケージをc:\temp\svn-srcに、mod_dontdothatファイルをに解凍しC:\Temp\dontdothatます。

mod_dontdothatモジュールの依存関係の 1 つがmod_dav_svnモジュールです。残念ながら、mod_dav_svnバイナリは共有ライブラリ (DLL) としてしか見つかりません。DLL に対してリンクすることはできません。したがって、最初のステップは静的mod_dav_svnライブラリを構築することです。

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

apxs 呼び出しは、実行するコマンドを出力します。最後のコマンドは、DLL をビルドするリンク呼び出しです。「リンク」を「lib」に置き換えてコピーし、「/dll」パラメーターを削除して、「out」パラメーターのファイル名を「libmod_dav_svn.lib」に変更します。次のようなものが得られるはずです。

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

リンクに関する警告が表示されます。それらは無視できます。libmod_dav_svn.libをディレクトリにコピーしmod_dontdothatます。のコンパイルプロセスを開始します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

これでうまくいくはずです。

于 2009-02-01T00:01:31.467 に答える
3

私が持っている周りのグーグル

  • mod_dav_svn.lib為に_dav_svn_split_uri
  • intl3_svn.libすべてのもののために_libintl
  • shell32.libSHGetFolderPath 用
  • advapi32.libRegありふれたもののために
  • ole32.libのためにCoInitialize、それは同類です
  • inflatedeflateにおいがzlib1.libする

それが役立つことを願っています。

于 2009-01-27T10:30:46.120 に答える
1

質問を修正していただきありがとうございます。

明確なリンカーの問題のようです。最初の未定義シンボルは webdav に関連していることがわかります。そのライブラリが適切な場所にあると確信していますか? たくさんの svn ライブラリを使って素敵な長いパスを提供しているのを見ましたが、1 つだけ見落としている可能性がありますか?

于 2008-09-16T22:31:17.060 に答える