• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VC++ .NET 2005 Expressで、Apacheのコンパイル)

VC++ .NET 2005 ExpressでApacheのコンパイル方法

このQ&Aのポイント
  • VC++ .NET 2005 ExpressでApache2.0.59(ssl)のコンパイル方法について教えてください。実行時にエラーが出て実行できません。
  • VC++ .NET 2005 ExpressでコンパイルしたApache2.0.59(ssl)を実行する際に、MSVCR80.dllが見つからないエラーが発生します。
  • Microsoft Visual C++ 2005 再頒布可能パッケージをインストールしても、VC++ .NET 2005 ExpressでApacheを実行できません。対処方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • jgk
  • ベストアンサー率75% (104/138)
回答No.1

VC++2005でCRTをダイナミックリンクすると、実行するためにはマニフェストが必要になります。 解決策としては コンパイルして.exeが生成されたフォルダ(インストール先ではありません)に、exeのファイル名.manifestというファイルがあるので、これをインストール先の.exeのあるフォルダにコピーする。 コマンドライン等から.exeが生成されたフォルダで mt.exe -manifest exeのファイル名.manifest -outputresource:exeのファイル名;1 のようにして、.exeにマニフェストを埋め込んで、その.exeをインストール先の.exeに上書きコピーする。 CRTをスタティックリンクする。 のどれかですね。

omajya
質問者

お礼

ありがとうございます。manifestをexeのあるフォルダにコピーしたところ、うまくいきました。 manifestファイルですが、exe用のやつ以外にも、soファイル用のもありましたが、これもコピーする必要があるのでしょうか。(結構数が多いので。) 軽く動かした限りだと、必要なさそうな気がするのですが。

その他の回答 (1)

  • jgk
  • ベストアンサー率75% (104/138)
回答No.2

ちょとわかりませんね… ですが、.exeと.soの要求してるCRTのバージョンが同じであれば問題ないと思います。 .exeと.dll(.so)の要求するCRTのバージョンが違うとか、 .exeのCRTがスタティックリンクでマニフェストがないとか、 みたいな場合が想定される場合にマニフェストを用意する必要があると思います。 ちなみに、.soの場合は、LoadLibraryで読み込まれる.dllなので、 コピーではダメで、mt.exeで埋め込む必要があります。

参考URL:
http://msdn2.microsoft.com/ja-JP/library/ms235342.aspx
omajya
質問者

お礼

ありがとうございます。参考になりました。soファイルに関しては、実際に動かしてみて確認します。

関連するQ&A