Ticket #26185

manifestのリンクで失敗する

Open Date: 2011-09-01 18:11 Last Update: 2011-10-17 00:59

Reporter:
(del#1144)
Owner:
(None)
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
1

Details

手持ちの Visual Studio 2005 では英語版のマニフェストのリンクで失敗するので、コンパイルが通るようにパッチを作ってみました。よければ使ってみて下さい。

http://ttssh2.sourceforge.jp/tmp/ffftp/

Ticket History (3/10 Histories)

2011-09-01 18:11 Updated by: (del#1144)
  • New Ticket "manifest" created
2011-09-01 18:55 Updated by: hylom
Comment

とりあえずファイルリリースページにパッチを置いておきました。検証してみます。

http://sourceforge.jp/projects/ffftp/wiki/PatchForVS05

2011-09-06 21:17 Updated by: s_kawamoto
Comment

VS2005のソリューションをデフォルトのままVS2008用に変換してみたところ、 同じ症状(この時のパスは"C:\Documents and Settings\kawamoto\デスクトップ\ffftp-1.97b-src\FFFTP.sln")が発生しましたが、 ファイル群を半角英数のみのパス(例"C:\ffftp"内)に配置すると正常にビルドできました。

2011-09-06 21:51 Updated by: (del#1144)
Comment

VS2005ではパスを変更しても依然としてエラーとなりました。

1>リンクしています...
1>CVTRES : fatal error CVT1100: 重複するリソースです。type:MANIFEST, name:1, language:0x0409
1>LINK : fatal error LNK1123: COFF への変換中に障害が発生しました: ファイルが無効であるか、または壊れています。
もともとSourceCode.txtにはVS2010とあるのにslnとvcprojがVS2005用なんですね。

ところで、manifestの件は「インクリメンタルリンク」をFFFTP/FFFTP_English両方のDebugで「使用しない」にしただけで、パッチにはその他の複数の修正が含まれています。修正ごとにパッチファイルを分けた方が反映しやすいですか?VS2008のvcprojがコミットされていますが私は持ってないので、それ用の物は作ったとしてもこちらで動作確認できないのですが…

2011-09-07 12:51 Updated by: hiromichi-m
  • Summary Updated
2011-09-08 01:43 Updated by: s_kawamoto
Comment

maya への返信

VS2005ではパスを変更しても依然としてエラーとなりました。 {{{ 1>リンクしています... 1>CVTRES : fatal error CVT1100: 重複するリソースです。type:MANIFEST, name:1, language:0x0409 1>LINK : fatal error LNK1123: COFF への変換中に障害が発生しました: ファイルが無効であるか、または壊れています。 }}} もともとSourceCode.txtにはVS2010とあるのにslnとvcprojがVS2005用なんですね。 ところで、manifestの件は「インクリメンタルリンク」をFFFTP/FFFTP_English両方のDebugで「使用しない」にしただけで、パッチにはその他の複数の修正が含まれています。修正ごとにパッチファイルを分けた方が反映しやすいですか?VS2008のvcprojがコミットされていますが私は持ってないので、それ用の物は作ったとしてもこちらで動作確認できないのですが…

VS2008ですが、プロジェクトではなくソリューションのビルドをDebugで行うと半角英数のパスでも症状が発生するようです。 ソリューションのビルドをReleaseで行う場合や、プロジェクト単体でビルドした場合は問題無いようですが、VS2005を持っていないためそちらの環境でどのようになるかは分かりません。 恐らくSota氏はデバッグ作業を日本語版のみで行い、リリース時だけ両方生成していたのでしょう。

2011-09-08 17:42 Updated by: (del#1144)
Comment

修正を添付しました。

2011-09-13 12:17 Updated by: s_kawamoto
Comment

マニフェストの生成を無効にし、追加のマニフェスト(元々設定されていないが"0010-Change-the-way-to-link-manifest-file.patch"で追加された)を指定しないようにすると正常にビルドできました。 原因は、Visual Studioがマニフェストを操作した結果はリソースID#1としてリソースに追加されますが、既にFFFTP-eng.rcによりID#1にFFFTP.exe.manifestが読み込まれ、それらが競合したためのようです。 つまりリソースファイルでID#1にマニフェストを指定したらVisual Studio側でマニフェストを一切操作しないようにする必要があるということです。 日本語版やリリースビルドが通ったのは、偶然IDが競合してもエラーにならない条件を満たしていただけでしょう。

2011-10-17 00:59 Updated by: s_kawamoto
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2011-10-17 00:59

Attachment File List

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login