- PR -

他のPCでも使えるリリースビルドの仕方

投稿者投稿内容
osako
常連さん
会議室デビュー日: 2006/10/31
投稿数: 35
投稿日時: 2007-02-21 14:28
こんにちは。
他のスレでもお聞きしているのですが、回答が得られないため
こちらの方でもお聞きします。

現在、VC++Expressを用いてWIN32フォームアプリケーションを作成したのですが、
その、リリースでビルドしたファイルを他のPCへもっていき、実行させても
構成が悪いと言われ、起動できません。
以前にもDLLを作成したときも、このようにいわれたので、ランタイムライブラリを
マルチスレッドMTへして、ビルドしたら、問題なく使えるようになりました。
今回は、MTへすると、共通言語ライブラリサポートがclrなためにビルドできません。
どのようにすれば、実行できるようになるのでしょうか?

ちなみに、vc++ランタイムや.NETFrameworksのランタイムは入れたのですが、やはりダメでした。
何か、オプションでほかにもいじる必要があるのでしょうか?
clrじゃなくてランタイムサポートを使用しないと設定すると、リンカでエラーが無数にでてしまいます。「名前空間が〜」という感じのエラーです。
どなたか、初心者の私にもわかるように解説をお願いいたします。
よろしくお願いいたします。
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2007-02-21 14:34
引用:

構成が悪いと言われ、起動できません。



引用:

リンカでエラーが無数にでてしまいます。「名前空間が〜」という感じのエラーです。



それぞれ全部を列挙する必要は有りませんが、
せめてもう少し詳細なエラー内容を書きましょう。

それから、動いた環境と動かない環境の差異も
極力調べて書いて下さい。

そうしないと誰も答えられませんよ 
osako
常連さん
会議室デビュー日: 2006/10/31
投稿数: 35
投稿日時: 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ランタイムを入れましたが、
「構成が正しくないためアプリケーションを開始できませんでした。」と同じ状況です。

そのほかにも伝えなければならないものは複数あると思いますが、
何を伝えればよいかもわかりません。
申し訳ないですが、よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-22 07:08
WIN32のアプリケーションですよね?なぜにCLR?
インストールしたフレームワークのバージョンが正しくない可能性は?
_________________
osako
常連さん
会議室デビュー日: 2006/10/31
投稿数: 35
投稿日時: 2007-02-22 10:52
Windowsアプリケーションの場合はVC++ランタイムは必要なかったのでしょうか?
とりあえず、フレームワークは最新の2.0を入れました。
でも、実行不可でした。
ほかに必要な手順があるのでしょうか?

hito
会議室デビュー日: 2007/02/22
投稿数: 5
投稿日時: 2007-02-22 11:37
引用:

以前にもDLLを作成したときも、このようにいわれたので、ランタイムライブラリを
マルチスレッドMTへして、ビルドしたら、問題なく使えるようになりました。
今回は、MTへすると、共通言語ライブラリサポートがclrなためにビルドできません。
どのようにすれば、実行できるようになるのでしょうか?



おそらく問題の原因は2つあります。

1. Win32アプリケーションを作っているつもりで、CLRに依存する何かを組み込んでしまった。
たとえばManaged Cなコードをコピペしてきているとか、そんなような話。

2. テスト環境にインストールされているDLLがマルチスレッド用DLLだけとか、Side by Side
周りなDLL不足か、もしくはmanifest配ってない。

なんとなーく、vcredist_x86.exe とかすると一発で直りそうな気はしますが、より根本的には
セットアッププロジェクトをきちんと作る必要がありそうです。さらに根元的な問題としては、
共有ライブラリとかまじめに勉強してくださいという感じですが、まぁいいか。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-02-22 11:44
スレ主は「マルチポスト」をしていると公言している以上、
双方の掲示板での進捗状況を逐一報告すべきだと思うのだが。
できないのであれば、マルチポストはしないでほしい。
(高々半日レスがつかないからって、早々マルチポストはすべきじゃない。)

一応リンクだけは張っておきます。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1255615&SiteID=7
osako
常連さん
会議室デビュー日: 2006/10/31
投稿数: 35
投稿日時: 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について作成方法まではわかりましたが、ビルド時に生成されるものでよろしいのでしょうか?
また、それを実行ファイルと同じ場所におけばよろしいのでしょうか?

スキルアップ/キャリアアップ(JOB@IT)