• ベストアンサー

VC2005 ビルドオプションについて

VC2005で質問です。 [やりたいこと] VC2005でビルドを行い、意図したライブラリができるとします。 そのライブラリファイルを、予め準備していたExeファイルへ 入力/実行を自動的にする方法(設定)とかってあるのでしょうか? この時、作業はVC2005でビルドするだけです。 すみません、分かりにくいですね。 もう少し詳しく。。 [作業] 1. VC2005でビルドを実行 (1)Lib fileが作成される (2)予め準備していたexeファイル (3)予め準備していたexeファイルが出力したファイル 通常はビルドするだけだと、Libファイルが出来て((1)で)終了です。 今回やりたいのは、そのLibファイルを自動的に予め準備していた exeファイルへ入力/実行し、そのexeファイルから出力されたファイル を自動的に作成したいというものです。 言ってる事同じですね^^; ご存知の方がいらっしゃいましたら、ご教授ください。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8525/19382)
回答No.2

「最終的に作るファイル」と「最終的に作るファイルを作成する為のコマンド」と「ファイルの依存関係」を修正すれば可能。 >「最終的に作るファイル」 は >(3)予め準備していたexeファイルが出力したファイル に設定する。 そして >「最終的に作るファイル」 を作成する為のコマンドは >(2)予め準備していたexeファイル に実行時引数を与えた物にする。 更に「最終的に作るファイルはLib fileに依存する」と設定しておく。 これにより「Lib fileのソースを修正してビルド」すると 1.Lib fileがLib fileのソースより古いので、ソースをコンパイルしLib fileが作成し直される 2.予め準備していたexeファイルが出力するファイルがLib fileより古いので、予め準備していたexeが引数付きで実行され、予め準備していたexeファイルが出力するファイルが作成し直される 3.予め準備していたexeファイルが出力するファイルが最新になったのでビルド終了 となり、無事に「最終目的ファイル」が更新されます。

darkness22
質問者

お礼

「ビルド後に実行」にbatファイル設定することで出来ました。 ありがとうございました。

darkness22
質問者

補足

すみません、依存関係を持たせたのですが、 下記のやり方がわかりません。(素人ですみません) プロパティですよね? >「最終的に作るファイル」 は >(3)予め準備していたexeファイルが出力したファイル に設定する。 そして >「最終的に作るファイル」 を作成する為のコマンドは >(2)予め準備していたexeファイル に実行時引数を与えた物にする。

その他の回答 (1)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

ビルドイベントでビルド後のイベントとしてあらかじめ準備していたexeファイルの実行は出来ると思います Libファイルをexeファイルに入力というのがexeにコマンドライン引数で渡すとかであればそれも可能です

darkness22
質問者

お礼

ちょっと説明下手でしたね。 えーと、 ライブラリって書くからややこしくて、 一回目の出力は、バイナリファイルだと思ってください。 そのバイナリファイルを予め用意しているexeファイルへ 入力して実行したいです。

darkness22
質問者

補足

> ビルドイベントでビルド後のイベントとしてあらかじめ準備していた> exeファイルの実行は出来ると思います これがやりたいです。 コマンドライン引数への設定でしょうか?

関連するQ&A

  • VC6.0++でDXライブラリが上手くいかない!

    Windows10で家に昔買った VC6.0++があったのでインストールして DXライブラリのプログラムコードを入力して 実行してみたのですが、 VC6.0++上のビルドでは画像を表示するプログラムなら画像が表示されるし 音を鳴らすプログラムなら音がなるんですが、 作成したexeファイルを実行した場合、プログラムが実行されません なぜでしょうか? 何が悪いのでしょうか? 教えてくださいよろしくお願いします。

  • VC++6.0ビルド後の処理で黙り込み

    VC++6.0でDLLを作ったのですが、 プロジェクトの設定でビルド後の処理に copy debug\dll.dll c:\usedll\debug\dll.dll のようにしてリビルドたところ ----------------------------------------------- ................. コードを生成中... リンク中... ライブラリ Debug/MfcDll.lib とオブジェクト Debug/MfcDll.exp を作成中 ビルド後の処理 ----------------------------------------------- ここでビルドが固まってしまいます。 ビルドの中止を押しても復帰せず、VC++を閉じようとしてもビルド中はダメとおこられます。 Ctrl+Cでもダメです。 何度やっても再起動しても確実に止まります。 copy じゃなくてdirとかでも止まります。 ビルド後の処理を外せばちゃんとビルドできます。 なにか心当たりのある方いらっしゃいましたらアドバイスお願いいたします。

  • VC++でlib作成

    VC++初心者です。変な質問かもしれません。 VC++でライブラリー(~.lib)の作成は出来るのでしょうか。以下は可能である場合の質問です。 1)プログラミング自体に特殊な事、あるいは決め事はあるのでしょうか?普通のexeを作成する時と同様で何も意識する事は無いのでしょうか? 2)作成自体はexeを作る時の様にビルドにより行うのでしょうか?操作が知りたいです。 3)何らかの共通処理をdllとして作成するのと、libとして作成するのでは何か違いがあるのでしょうか。単純に考えると、実行時に動的にリンクするdllの方がレスポンス面で劣り、スタティックにリンクするlibの方がアプリケーションモジュール(共通処理を呼ぶ側)が大きくなる様な気がします。設計する時にどうやって切り分けを行っていますか? (スタティックにリンクするのがlibと書いてしまいましたが、これ自体も良くわかっていません。) 以上、よろしくお願いします。

  • VC++ 2010のエラーについて

    現在VC++ 2010を使ってソフトを作成しています。 BOOSTライブラリを用いているのですが、 ビルドを行おうとすると、 >LINK : fatal error LNK1104: ファイル 'libboost_thread-vc100-mt-sgd-1_43.lib' を開くことができません。 といったエラーが出てしまいます。 ちなみにboostはバージョン1_43を使用しています。 また、bjamを行い、boostはしっかりとビルドされております。 さらに、libboost_thread-vc100-mt-sgd-1_43.libが存在することは確認しており、 そのフォルダまでのパスもしっかり通しました。 どなたかご存知の方いらっしゃいましたら教えていただけると幸いです。

  • BCBで作成したDLLを、VC++で静的リンクさせる方法

    BCBで作成したDLLを、VC++で静的リンクさせる方法 Borland C++ Builderで作成したDLLを、VC++アプリケーションで利用できるように LIBファイルに変換したいのですが、上手くいきません。 下記の手順を踏みました。 1. BCBでDLL作成   「VC++スタイルのDLL」で作成、   「VCLを使う」「CLXを使う」「マルチスレッドを使う」はチェックせず 2. コマンドラインで「IMPDEF.exe」を使用して、dllからdefファイル作成   (IMPDEF.exeは、\Borland\CBuilder6\Binに格納されていた) 3. コマンドラインで「LINK.exe」「LIB.exe」を使用して、defからlibファイル作成   (LINK.exeとLIB.exeは、\Microsoft Visual Studio\VC98\Binに格納されていた) 4. VC++プロジェクトファイルを保存したフォルダに、DLLファイルとlibファイルをコピー 5. VC++の「プロジェクト」-「設定」-「リンク」-「オブジェクト/ライブラリモジュール」に   作成したlibファイルを追加 VC++プロジェクトをビルドすると、下記のエラーメッセージが表示されます。 ///////////////////////////////////////////////////////////////////////////////// dllread.obj : error LNK2001: 外部シンボル "__imp__(関数名)@0" は未解決です LIBC.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です Release/dllread.exe : fatal error LNK1120: 外部参照 2 が未解決です。 link.exe の実行エラー ///////////////////////////////////////////////////////////////////////////////// BCBとVC++のバージョンは、下記の通りです。 BCB Professional 6.0 VC++ 6.0 ちなみに、同じDLLを動的リンクで利用することは出来ました。 初心者の質問で申し訳ございませんが、解決策が分かる方がいらっしゃいましたら 教えていただけないでしょうか?

  • VC++6.0からVC++.NET2005へ移植

    VC++6.0で作成したプログラムをVC++.NET2005に移植しました。 ビルドを行うと『fatal error LNK1104:ファイル'mfc42.lib'を開くことができません。』のエラーが出てしまいます。 ソリューションのプロパティを見てもどこで「mfc42.lib」の参照を定義しているのか分かりません。 どこで「mfc42.lib」の参照を定義しているのか教えてください。また、対策を教えてください。

  • mingw用のboostビルドについて

    vsita x64 でのc++プログラミングで、これまではVisual studio 2008でboostを使用していましたが、現在eclipse+mingwの環境への移行を試みています。そのためのmingw用のboostライブラリの準備がうまくいかず困っています。 今回行ったことは boost_1_38_0.zip をダウンロードし、解凍。 同じくダウンロード解凍したbjam.exeをboost_1_38のディレクトリ(configureなどがある場所)に移動。 コマンドプロンプトから bjam -sTOOLS=mingw --prefix=C:\boost_for_mingw\boost install するとインストール先のlibフォルダには libboost_date_time-vc90-mt.lib  のようにvc90と名前にかかれたlibファイルが生成されていました。本来mingw用にlibboost_date_time-mgw34-mt.lib などとなるべきで、今回なんらかの理由でVisual studio用?にビルドされてしまっている(?)ようです。 またいくつかのライブラリ (たとえば正規表現ライブラリ libboost_regex) のlibファイルが生成されていないようでした。 どのようにすればmingw環境用のライブラリを生成することができるでしょうか? *mingw自体はすでにインストールしてあり、他のIDEから使用することができています。 *"C:\minGW\bin"にパスは通してありますが、mingw.exeというものはなく、"mingw32-gcc.exe" となっています。 *システムパスにはvisual studioのbinディレクトリが通してあります。 ネット上の情報も見てみましたが、大体上記の方法であっているようです。(sTools がmingw かgccかで異なっている場合があるようですが。。。) よろしくお願いします。

  • ビルドについて

    VC++であるプロジェクトのビルドプロパティで疑問に思った事があります。 あるプロジェクトを"hoge"として、hogeはfunction.dllを使っています。 hoge.cpp は hoge.h と function.h を インクルードしています。 ビルドされた hoge.exe は function.dll を使って実行します。 function.dll を新しい物に変えると 変更が適用されて正常に実行できます。 しかしよく見るとhogeは、function.lib をリンクしていました。 これだと静的リンクになり、dllを変えても意味が無いと思っていたのですが、 何故正常に dll の置換えだけでうまく動くのでしょうか?

  • VC++でビルド時の、リンク警告 LNK4006、LNK4221 を消したい

    こんにちは。 先週から仕事で Visual Stadio 2005 を使用して、C言語 でプログラムを書いています。 コードをビルドする際、ライブラリ作成時に以下の警告がでます。 1>Dynamic_02.lib(Dynamic_02.dll) : warning LNK4006: __NULL_IMPORT_DESCRIPTOR は Dynamic_01.lib(Dynamic_01.dll) で定義されています。2 つ目以降の定義は無視されます。 1>Dynamic_02.lib(Dynamic_02.dll) : warning LNK4221: パブリック シンボルが見つかりませんでした。アーカイブ メンバにアクセスできません。 これらの警告を消す方法はないですか? 以下は手順の詳細です。 1. 動的リンクライブラリ、Dynamic_01.dll を作成した。 同時にインポートライブラリ Dynamic_01.lib が作成される。 2. 動的リンクライブラリ、Dynamic_02.dll を作成した。 同時にインポートライブラリ Dynamic_02.lib が作成される。 3. Dynamic_01.dll と Dynamic_02.dll の両方の関数を使用する、 静的リンクライブラリ、Static_01.lib の作成を試みた。 追加の依存関係に Dynamic_01.lib と Dynamic_02.lib を指定し、 Static_01.lib をビルドすると、上記の警告が表示される。

  • VCの使い方

    tororinnと申します。 現在、C言語の勉強をしております。 以前まではボーランド社の無償コンパイラを利用していたのですが、最近、VCを利用しております。 さて、質問ですが、 簡単に申しますとVCの使い方がわかりません。 以前、学校でVCを使っていたのですが、やり方をすっかり忘れてしまいました。 要は、ボーランドでやっていた時のように、 シンプルにコンパイラ(ビルド)をおこなった際に、 プロンプトに実行結果が出力されるのが、ベストです。 いろいろサイトを見て回って、 [新規作成]-「プロジェクト」-「win32 Application」 を選択して、 簡単な"hello"などを出力するだけのプログラムを試しに作ったのですが、 ビルドではエラーがないのに対し、 実行すると、「プログラムを実行できません」というメッセージが出てきます。 なにとぞ、よろしくお願い申し上げます。