VC++2008でインポートライブラリのスタティックリンクの設定

このQ&Aのポイント
  • VC++2008でのインポートライブラリのスタティックリンクの設定方法を教えてください。
  • VC++2008では従来のVC++6.0と異なり、「プロジェクトの設定」ウィンドウがないため、スタティックリンクの設定方法が変わっています。
  • インポートライブラリのスタティックリンクを行うためには、VC++2008では別の方法を使用する必要があります。
回答を見る
  • ベストアンサー

VC++2008でインポートライブラリのスタティックリンクの設定

VC++2008でインポートライブラリのスタティックリンクの設定 従来のVC++6.0ではプロジェクトのビルド時にインポートライブラリをスタティックリンクさせる場合 「プロジェクト」メニューから「設定」項目を選択し、「プロジェクトの設定」ウィンドウを表示させて、 「リンク」タブをクリックして表示されるページの「オブジェクト/ライブラリモジュール」欄の先頭に、 MyDll.lib(例)とスペースを1つ入力していました。末尾のスペースはMyDll.libとkernel32.libを区切るために必要でした。 これをVC++2008で実現するためにはどの様にしたらいいのですか? VC++2008の「プロジェクト」メニューを探しても「プロジェクトの設定」ウィンドウがありません。

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

  • ベストアンサー
回答No.1

VC++.NET 2003で確認しましたが、2005でも同様だったので、2008でも変わらないと思います。 (1)「プロジェクト」メニューから「○○○のプロパティ」(○○○はプロジェクト名)を選択。 (2)「構成プロパティ」の「リンカ」の「全般」を選択。 (3)「追加のライブラリディレクトリ」に該当のディレクトリを設定。 (4)「構成プロパティ」の「リンカ」の「入力」を選択。 (5)「追加の依存ファイル」に該当のライブラリファイルを設定。 (3)、(5)は「構成」(Debug、Release等)や「プラットフォーム」(Win32等)の必要なものすべてに付いて行います。

hwanwan
質問者

お礼

質問のご返事どうもありがとうございます。 (3)「追加のライブラリディレクトリ」に該当のディレクトリを設定。 で、追加したいライブラリファイルMyDll.libがあるディレクトリ(すなわちC:\Vc\MyDll\Debugディレクトリ)を選択しましたが、 (5)「追加の依存ファイル」に該当のライブラリファイルが出て来ません。 どうなっているのでしょうか? 今作っているプロジェクトUseDll.cpp(C:\Vc\UseDllディレクトリ)のビルド時にインポートライブラリMyDll.libをスタティックリンクされるように設定したいです。

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

当方、VS2005ですが… >(5)「追加の依存ファイル」に該当のライブラリファイルが出て来ません。 右の方にある「...」のボタンを押して出てくる「追加の依存ファイル」のダイアログに出てこない。 ということですか? 「親またはプロジェクトの規定値から継承」している訳ではないでしょうから、「継承の値」の一覧には入ってこないでしょう。 上のエディトボックスにライブラリのファイル名を記入して下さい。 # (3)「追加のライブラリディレクトリ」に該当のディレクトリを設定。 # を実施していない場合はフルパスで指定…ですかね。 #pragma comment(lib, "comctl32.lib") と、いう方法もあるにはありますが…。

hwanwan
質問者

お礼

お返事どうもありがとうございます。 「追加の依存ファイル」のダイアログ上のエディットボックスにライブラリのファイル名をキーボードから直接打てば良いのですね。 どうもありがとうございました。

関連するQ&A

  • スタティックライブラリのリンクについて

    「猫でもわかるWindowsプログラミングを買ったのですが、 VC++2008エクスプレスエディションで出来ると書いてあり 説明どうりやったのですが、スタティックライブラリのリンクをするように書いてあったのですが、リンクはわかったのですが、libファイル を出したいのに、出ません。本には、すべてのファイルが出ており、libファイルとリンクができているのですが、私がやってみたところ、 すべてのファイルができず、libファイルが表示されません。 すべてのファイルを出すにはどうしたらいいでしょうか?

  • VS2013リンクするライブラリ一覧表示方法は?

    こんばんは。 Visual Studio 2013の初心者です。基本的なことで困っております。 どうかアドバイスをお願い申し上げます。 ・質問内容 プロジェクトに登録されているリンクするライブラリ名(*.lib)を確認する(一覧表示する)方法を教えて下さい。 ・背景 とある仕事を引きつぐことになりまして、貰ったVS2013のプロジェクト(ソース)をビルドしようとしましたが「****.lib」がありません。と出て来てリンクエラーになってしまいます。 足りないライブラリを追加してまたビルドすると別の「****.lib」がありません。と出てしまいます。この繰り返しです。 しかし、その都度「***.libファイルが足りない」と言って貰うのは、ウザがられるので一括して見る方法が判りません。 プロジェクトファイルでリンクに必要な「ライブラリの一覧」を見たいのです。そして、「これだけのlibが無いので欲しい」と一括して貰いたいのです。 しかし、lib名を検索掛けても何処にリンクに必要なライブラリ一覧が記録されているファイルが見つかりませんでした。 一体何処に記録されているのでしょうか? 色々web検索したのですがどうしても見つかりません。 大変、難儀しております。 宜しくお願い申し上げます。

  • 静的リンクライブラリについて

    WindowsのライブラリにDLLやLIBといった形式があり、それぞれ「動的リンクライブラリ」「静的リンクライブラリ」となっていますが、 静的リンクライブラリとしてビルドされたライブラリを、動的に実行プログラムにリンクさせることは(Cやアセンブラなどの)実装次第で可能なのでしょうか? ビルド時にリンカがやってくれてることを実行時に行えればOK・・・という素直な話ではないのでしょうか。DLLも実行時にGetProcAddress()などを使ってアドレス解決をするわけですし、LIBでも同じことをするのは不可能ではないのでは?と思ったのです。 ※動的/静的リンクの概念や具体的な使用方法などはネット上で調べることができましたが、中身にまで踏み込んだ解説をしているページには巡り合えませんでした。そういう具体的な解説のあるページの紹介だけでもとても助かります。また、「根本的に思い違いをしてるんでは?」というご指摘も非常に助かります。 ※私自身↑に対する需要はないのでコスト・メリットとかは度外視です。興味本位というやつです。 ※別段、Windowsやライブラリの形式にこだわりがあるわけではないですが、これが一番メジャーだろう、ということでWindowsのDLL/LIBを対象に質問させて頂きました。 よろしくお願いします。

  • リンク設定の場所がわからない

    VC++Ver6をベースに書かれた書籍に、「プロジェクト」メニューから「設定」を選択し、出てきた「プロジェクト設定」ウインドウのリンクタブに切替、「オブジェクト/ライブラリー モジュール」の項目に・・・・とありますが、VS2005では、設定が出てきません。 どの場所からリンク設定するのでしょうか。

  • ライブラリ??

    VCをつかってコーディングしています。 C言語仕様のネットワークプログラミングです。 socketをつくりデータのやり取りをするのですが gethostbyname()という関数が動作しません。 ちゃんとコンパイルもビルドもとおります。 ライブラリもwsock32.libやws2_32.libをリンクしています。 なにが原因なのかわかりません。 WINDOWSがまずいのでしょうか? 宜しくお願いします。

  • 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とかでも止まります。 ビルド後の処理を外せばちゃんとビルドできます。 なにか心当たりのある方いらっしゃいましたらアドバイスお願いいたします。

  • 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++でビルド時の、リンク警告 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 をビルドすると、上記の警告が表示される。

  • ライブラリのリンクについて

    Visual Studio net 2003 で プログラミングを始めたばかりの初心者です。 先日 猫でもわかるwindows プログラミング(第2版)の本をつかって p415にある説明どうりに 第13章のコモンコントロールのプロジェクトにライブラリをリンクさせようとしたのですが、その第13章で必要と思われるcomctl32.libが見つかりません。このライブラリがないせいか、この章でつくったプログラムには fatal error がでてきてしまいます。 いったいcomctl32.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が存在することは確認しており、 そのフォルダまでのパスもしっかり通しました。 どなたかご存知の方いらっしゃいましたら教えていただけると幸いです。

専門家に質問してみよう