- - PR -
他のPCでも使えるリリースビルドの仕方
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-21 14:28
こんにちは。
他のスレでもお聞きしているのですが、回答が得られないため こちらの方でもお聞きします。 現在、VC++Expressを用いてWIN32フォームアプリケーションを作成したのですが、 その、リリースでビルドしたファイルを他のPCへもっていき、実行させても 構成が悪いと言われ、起動できません。 以前にもDLLを作成したときも、このようにいわれたので、ランタイムライブラリを マルチスレッドMTへして、ビルドしたら、問題なく使えるようになりました。 今回は、MTへすると、共通言語ライブラリサポートがclrなためにビルドできません。 どのようにすれば、実行できるようになるのでしょうか? ちなみに、vc++ランタイムや.NETFrameworksのランタイムは入れたのですが、やはりダメでした。 何か、オプションでほかにもいじる必要があるのでしょうか? clrじゃなくてランタイムサポートを使用しないと設定すると、リンカでエラーが無数にでてしまいます。「名前空間が〜」という感じのエラーです。 どなたか、初心者の私にもわかるように解説をお願いいたします。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2007-02-21 14:34
それぞれ全部を列挙する必要は有りませんが、 せめてもう少し詳細なエラー内容を書きましょう。 それから、動いた環境と動かない環境の差異も 極力調べて書いて下さい。 そうしないと誰も答えられませんよ | ||||||||
|
投稿日時: 2007-02-21 14:55
はい。申し訳ありません。どのような情報が必要なのかわかりませんでした。
共通言語ランタイムサポートをMTに設定して、ランタイムライブラリを使用しない設定 では、このようなリンクエラーとなります。 c:\documents and settings\0020h07505\my documents\visual studio 2005\projects\reg_tool\registar\Reg_Tool_4_Oahu.h(5) : error C2653: 'System' : 識別子がクラス名でも名前空間名でもありません。 c:\documents and settings\0020h07505\my documents\visual studio 2005\projects\reg_tool\registar\Reg_Tool_4_Oahu.h(5) : error C2871: 'Forms' : この名前を指定された名前空間は存在しません。 c:\documents and settings\0020h07505\my documents\visual studio 2005\projects\reg_tool\registar\Reg_Tool_4_Oahu.h(6) : error C2871: 'System' : この名前を指定された名前空間は存在しません。 共通言語ランタイムサポートをclr、ランタイムライブラリをMDに設定すると ビルドはできるのですが。 他のVC++が入っていないPCへ作成されたexeを入れて実行すると 「構成が正しくないためアプリケーションを開始できませんでした。」 と表示されて、実行できません。 この状況で、そのPCへVC++ランタイムと.NETFrameworkランタイムを入れましたが、 「構成が正しくないためアプリケーションを開始できませんでした。」と同じ状況です。 そのほかにも伝えなければならないものは複数あると思いますが、 何を伝えればよいかもわかりません。 申し訳ないですが、よろしくお願いします。 | ||||||||
|
投稿日時: 2007-02-22 07:08
WIN32のアプリケーションですよね?なぜにCLR?
インストールしたフレームワークのバージョンが正しくない可能性は? _________________ | ||||||||
|
投稿日時: 2007-02-22 10:52
Windowsアプリケーションの場合はVC++ランタイムは必要なかったのでしょうか?
とりあえず、フレームワークは最新の2.0を入れました。 でも、実行不可でした。 ほかに必要な手順があるのでしょうか? | ||||||||
|
投稿日時: 2007-02-22 11:37
おそらく問題の原因は2つあります。 1. Win32アプリケーションを作っているつもりで、CLRに依存する何かを組み込んでしまった。 たとえばManaged Cなコードをコピペしてきているとか、そんなような話。 2. テスト環境にインストールされているDLLがマルチスレッド用DLLだけとか、Side by Side 周りなDLL不足か、もしくはmanifest配ってない。 なんとなーく、vcredist_x86.exe とかすると一発で直りそうな気はしますが、より根本的には セットアッププロジェクトをきちんと作る必要がありそうです。さらに根元的な問題としては、 共有ライブラリとかまじめに勉強してくださいという感じですが、まぁいいか。 | ||||||||
|
投稿日時: 2007-02-22 11:44
スレ主は「マルチポスト」をしていると公言している以上、
双方の掲示板での進捗状況を逐一報告すべきだと思うのだが。 できないのであれば、マルチポストはしないでほしい。 (高々半日レスがつかないからって、早々マルチポストはすべきじゃない。) 一応リンクだけは張っておきます。 http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1255615&SiteID=7 | ||||||||
|
投稿日時: 2007-02-22 11:59
blueさん
いつも、色々なとこでお世話になっています。 申し訳ないです。了解しました。 hitoさん 1. Win32アプリケーションを作っているつもりで、CLRに依存する何かを組み込んでしまった。 たとえばManaged Cなコードをコピペしてきているとか、そんなような話。 ⇒そうです。コピペしているので混在しています。 このような場合は、もう、CLRを使わないようにしないとダメでしょうか? 2. テスト環境にインストールされているDLLがマルチスレッド用DLLだけとか、Side by Side 周りなDLL不足か、もしくはmanifest配ってない。 ⇒テスト環境は、Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)とMicrosoft .NET Framework Version 2.0 再頒布可能パッケージ (x86)が入っています。 ので、問題ないのかと思っておりますが。。的外れでしょうか? manifestについては、配っていませんです。 こちらの方<http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1255615&SiteID=7>でも質問していますが、manifestについて作成方法まではわかりましたが、ビルド時に生成されるものでよろしいのでしょうか? また、それを実行ファイルと同じ場所におけばよろしいのでしょうか? |