ビルドにおけるファイルのリンク方法が分からない

このQ&Aのポイント
  • 「a.c」と「b.lib」を一緒にリンクしてビルドする方法が分からず困っています。
  • 質問者は「設定」や「オプション」のリンクやコンパイルの前後のタブに「リンク」という項目があるとの情報を聞きましたが、自分のVisual Studio 2008にはそのような項目がなく困っています。
  • 上司のVisual Studioのバージョンと自分のバージョンが違うため、ビルドの方法が異なる可能性があります。自分のVisual Studio 2008においては、他の方法でファイルのリンクを行う方法を教えていただけると助かります。
回答を見る
  • ベストアンサー

「a.c」をビルドをする際に会社で用意された、「b.lib」というファ

「a.c」をビルドをする際に会社で用意された、「b.lib」というファイル(b.libはデスクトップ上に置いてあります。) と一緒にリンクしてビルドさせたいのですが、その方法が良く分からず、困っております。 教えて頂いた方法では「設定」→「オプション」のリンクやらコンパイルやらビルド前・後等の タブがある所の「リンク」と言う所をクリックし、そのファイルを書けばいいとおっしゃってたのですが、 そもそも「設定」が無く困った状態です。恐らく、上司の方と自分のvisual studioのバージョンが違う せいかもしれませんが、自分の使っている「visual studio 2008」のやり方で教えて頂けませんでしょうか? visual studio 2008を使うのは初めてですので何卒よろしくお願い致します。

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

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

> あと失礼ついでではあるかと思いますが、複数のlibファイルを指定したいときは、 > 半角スペースで区切れば宜しかったでしょうか? 半角スペースで良かったと思います。

nardobrea
質問者

補足

ですよね。出来ました。 でも何だったんだろう?ソケット通信用にws2_32.libも必要だったので、 先のb.libとws2_32.libを指定してみたのですが、 ws2_32.libの方の外部シンボルエラーが出たので質問させていただいた次第なのですが… 解決出来ましたので、とりあえずありがとうございました。

その他の回答 (2)

回答No.2

ライブラリ追加の基本的な操作は次の通り。 (1)メニューの「プロジェクト」→「○○○のプロパティ」(○○○はプロジェクト名) (2)「構成プロパティ」→「リンカ」→「全般」 (3)「追加のライブラリディレクトリ」に「b.lib」のディレクトリを追加 (4)「構成プロパティ」→「リンカ」→「入力」 (5)「追加の依存ファイル」に「b.lib」を追加。 以下、余談。 「Visual Studio 6.0」の頃の感覚だと、 「ソリューションエクスプローラ」→「○○○」(プロパティ)→右クリックで「追加」→「既存の項目」で「b.lib」を追加してもOKだったような気がするけど、さて、どうなんだろう? ライブラリがそのプロジェクトでしか使わない一過性のものなら、こっちの方が良さそうだけど。

nardobrea
質問者

補足

ありがとうございます。 どちらのやり方でも無事ビルドすることができました。 あと失礼ついでではあるかと思いますが、複数のlibファイルを指定したいときは、 半角スペースで区切れば宜しかったでしょうか?

  • chie65535
  • ベストアンサー率43% (8519/19367)
回答No.1

ぶっちゃけ「ヘルプに載っているのでF1キー押せ」って言いたい。 一番簡単なのは「b.libを、他の標準libファイルがある場所に置く」なんだけど。 「デスクトップに置いたファイルをそのまま使う」のは、管理、運用、安全の面から言って、かなり問題がある。 デスクトップは「ユーザーごとに場所が異なる」ので、異なるアカウントでログオンするとデスクトップに置いたファイルが異なってしまったり、他のユーザーから参照できなかったりする。 「社内共通ライブラリ」であれば「サーバー上に置くなど、置き場所を一元化する」など、管理、運用、安全面での配慮が必要。 そういう「配慮」が出来てない会社に居る場合は「酷い所に就職したなあ、こういう管理運用安全の甘さで被害者になったり、バグを残したまま製品を出荷して加害者にならないよう、気をつけよう」と、対策・自衛をしておいた方が良いでしょう。

関連するQ&A

  • visual C++ ビルド

    visual C++ ビルド 次のソースをビルドしたら、こんなエラーがでてきました。 どこがだめなんでしょうか。 //画面への出力を行うプログラム #include <instream> using namespace std; int main() { cout << "初めてのC++プログラム。\n"; cout << "画面に出力しています。\n"; } ビルド結果 1>------ ビルド開始: プロジェクト: hello, 構成: Debug Win32 ------ 1>コンパイルしています... 1>list1-1.cpp 1>c:\documents and settings\藤本剛史\my documents\visual studio 2008\projects\hello\list1-1.cpp(3) : fatal error C1083: include ファイルを開けません。'instream': No such file or directory 1>ビルドログは "file://c:\Documents and Settings\藤本剛史\My Documents\Visual Studio 2008\Projects\hello\Debug\BuildLog.htm" に保存されました。 1>hello - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

  • VS2010にて、依存関係とビルド順

    2つのプロジェクトを内包するソリューソンがあるとします。 片方はDLLで、「a.dll」とします。 もう片方はEXEで、「b.exe」とします。 EXEは「a.dll」を使用していて、「a.lib」をリンクしています。 (プロジェクトのリンカーの追加の依存ファイルに「a.lib」を記述) 依存関係も設定し、ビルド順はDLL,EXEの順になっています。 それで、DLL側のソースを更新し、ビルドを行いました。 結果、「a.lib」と「a.dll」が更新されました。 しかし、EXE側はビルドされませんでした。(更新不要で省略された) 「a.lib」をリンクしているので「a.lib」が更新されれば、 少なくともEXE側もリンク(ビルド)する必要があるはずです。 このような場合どのように設定すれば良いのでしょうか? ちなみに、それぞれを1つソリューソンに分け、 DLL側をビルド、EXE側をビルドとした場合は、 EXE側はリンク(ビルド)されました。 また、Visual Studio 2008以前はこのような事はありませんでした。 Visual Studio 2010になって、この辺りの処理が変わったのでしょうか?

  • .objファイル、.lib ファイルについて

    ◆C++でのコンパイルされたプログラムの参照について。  以前、VB.netで開発をしていた時は、コンパイルをするとDLLが作成され、  それを他のプログラムからリンクして使用していました。  C++の場合h、cppのファイルをコンパイルすると、「.DLL」はできないのでしょうか? ◆.obj、.lib について  Visual Studioにて、.obj、.lib を、参照先に設定していますが、  内容をよくわかっていません。  オブジェクトリンク、ライブラリリンクとは、  (1)それぞれどんな概念なのでしょうか?  (2).obj、.libでは何が違うのでしょうか?

  • C/C++の.libについて教えてください。

    こんにちは。 C/C++のライブラリファイルについて教えてください。 現在VisualStudio2008 AcademicEditionでライブラリを制作しているのですが質問させてください。 ライブラリを制作するプロジェクトをLibA、そのライブラリを利用して実行ファイルを制作するプロジェクトをProjとします。 LibAでother()関数を利用するのに #pragma comment ( lib, "other.lib" )とソースコード上に記述しました。 (other.libは他のプロジェクトで自作したスタティックライブラリでLibAと同じフォルダに入っていると仮定します) ProjでLibAで制作したライブラリを使用するために#pragma comment ( lib, "LibA.lib" )とソースコード上に記述しました。 しかし、other.libが開けませんと怒られてしまいます。 other.libを利用しているのはLibAなのでProj側でother.libを読み込むように強制されるのは面倒臭いのですが、LibA側にother()関数を埋め込むようなことはできないのでしょうか? LibAを利用するProjでもother.libを要求されないようにするにはどうすればいいでしょうか? /* スタティックライブラリを作成するためにLibAをコンパイルする時に#pragma comment ( lib, "other.lib" )の記述が不要というのは知っています。 LibAにその記述を行わなかった場合Projで自分で記述する必要があることも知っています。 */ 現在、私が思いついているのはother.libを作成するプロジェクトのソースコードを引っ張ってきてLibAに入れて一緒にコンパイルするくらいです。 日本語がへたくそでわかりづらいところがあるかとは思いますがよろしくお願いします。

  • Visual C++のビルドで

    こんにちは。VC++の初心者です。 今MFCアプリケーションでシングルドキュメントで「ユニコードライブラリをしようする」をチェックなしで簡単なプログラムを作ったのですが、HelloVCView.cppファイルの中で、 void CvdclsView::OnDraw(CDC* pDC)  //■変更 /*pdc*/ → pDC { ・・・   pDC->TextOut(0,0,"Hello,VC++"); }     と本に書いてあるとおり変更して、ビルドしたところ、 1>c:\documents and settings\・・\my documents\visual studio 2005\projects\vdcls\vdcls\vdclsview.cpp(51) : error C3872: '0x3000': この文字を識別子で使用することはできません 1>c:\documents and settings\・・\my documents\visual studio 2005\projects\vdcls\vdcls\vdclsview.cpp(52) : error C3646: '    ' : 不明なオーバーライド指定子です といった表示がでてしまい、ビルドできません。最初のほうはこれでビルドできたのですが、最近になってこのように新しく作ってビルドするとこのような表示が出てしまいます。このエラー表示をダブルクリックしたら上のOnDraw関数のところに移動しました。設定の箇所をいじったつもりはないのですがもしかしたらそのようなミスがあったかもしれません。 この0x3000とは何でしょうか?どのようにすればこのような問題が解決するのでしょうか。変な質問かもしれませんが、よろしくお願いします。 ちなみにVisual Studio 2005 Academic Editionを利用しています。

  • .libファイルのリンク

    Visual C++ 2005 Express Edition を使ってプログラミングの勉強をしています。 自分でdllを作りそれを他のプロジェクトにリンクしようとしたのですが、 .libファイルをプロジェクトに追加したところ、ダイアログボックスが出現し、 拡張子".lib"を含むビルドファイルに対するカスタムビルド規則が見つかりませんでした。 この拡張子のファイルをビルドするためのカスタムビルド規則を定義する、新しい規則ファイルを作成しますか? と聞かれました。 意味が分からないので "いいえ"にしたところ、コンパイルエラーになりました。 この場合はどうしたらいいのでしょうか??

  • .libファイルのカスタムビルド規則の設定の仕方を教えてください。

    VisualC++ExpressEditionでプログラミングを勉強しているのですが、拡張子が「.lib」のファイルを追加すると、「対応するカスタムビルド規則が見つかりません。」というダイアログボックスが出てきます。ここで「はい」を選ぶとカスタムビルド規則の設定ができるようなのですが、どのように設定すればいいのかわかりません。 解説しているサイトなどでもいいので、わかる方がいましたら教えてください。 よろしくお願いします。

  • Microsoft visual C++ Express Edtionでビルドできない

    Microsoft visual C++ Express Edtionを使っていますが、次のプログラムをビルドして、実行ファイルを使おうとすると次のエラーがでます。何処が違っているでしょうか? /* 整数値との和を表示する */ #include <stdio.h> int main(void) { printf("%d", 15 + 37); return (0); } ------ ビルド開始: プロジェクト: test2, 構成: Debug Win32 ------ リンクしています... LINK : fatal error LNK1104: ファイル'.\Debug\stdafx.obj' を開くことができません。 ビルドログは"file://d:\MYDOCUMENTS\Visual Studio 2005\Projects\test2\test2\Debug\BuildLog.htm" に保存されました。 test2 - エラー1、警告0 ========== ビルド: 0 正常終了、失敗、更新、スキップ==========

  • Visual C++ 2005 Express Editon でのビルドエラー

    OpenGLのプログラム環境を自分のPCで整えたいと思い、OpenGL,Windowsなどで検索したホームページなどを参考にして色々やってみたのですが、うまくいきませんでした。OSはXPです。 まずコマンドラインコンパイラとVisual C++ 2005 Express Editionの両方で試してみたのですが、コンパイルまたはビルドの際に fatal error C1083: include ファイルを開けません。'GL/gl.h': No such file or directory というエラーが出てしまいます。 glut.h glut32.dll glut32.libはソースと同じフォルダにあります。 学校では.NET 2003を使用しているのですが、問題なく動いています. glut.hでGL/gl.hを呼び出しているようなのですが・・・ 根本的に設定が違うのでしょうか?

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

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

専門家に質問してみよう