- ベストアンサー
静的リンクと動的リンク
組込み関係の者です。(μITRONおんりー) できれば具体的な例などを挙げて頂いてご説明いただけると 助かります。 (1)静的リンクとは、ビルド時にライブラリファイルとリンクすることでしょうか?ソースファイルのAPIを呼び出しているのは静的リンク? (2)ビルドというのは、静的リンクを行ってロード用の1つのファイルを作成すること? CPU内蔵のROMに焼くのはこの1つのファイルのみ? (2)動的リンクする場合、どこにどういった形で置いておくもの? (μITRONでは動的リンクはないですが、Linuxとか使った場合) 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- VS2013リンクするライブラリ一覧表示方法は?
こんばんは。 Visual Studio 2013の初心者です。基本的なことで困っております。 どうかアドバイスをお願い申し上げます。 ・質問内容 プロジェクトに登録されているリンクするライブラリ名(*.lib)を確認する(一覧表示する)方法を教えて下さい。 ・背景 とある仕事を引きつぐことになりまして、貰ったVS2013のプロジェクト(ソース)をビルドしようとしましたが「****.lib」がありません。と出て来てリンクエラーになってしまいます。 足りないライブラリを追加してまたビルドすると別の「****.lib」がありません。と出てしまいます。この繰り返しです。 しかし、その都度「***.libファイルが足りない」と言って貰うのは、ウザがられるので一括して見る方法が判りません。 プロジェクトファイルでリンクに必要な「ライブラリの一覧」を見たいのです。そして、「これだけのlibが無いので欲しい」と一括して貰いたいのです。 しかし、lib名を検索掛けても何処にリンクに必要なライブラリ一覧が記録されているファイルが見つかりませんでした。 一体何処に記録されているのでしょうか? 色々web検索したのですがどうしても見つかりません。 大変、難儀しております。 宜しくお願い申し上げます。
- 締切済み
- C・C++・C#
- OpenCV2.0or2.1でスタティックリンクライブラリをビルドした
OpenCV2.0or2.1でスタティックリンクライブラリをビルドしたい 表題の件ですが、MFCをスタティックリンクさせてビルドしているアプリケーションだと、OpenCVをインストールしたときに出来上がるライブラリではエラーの出るものがあります。そのエラーはMFCをDLLでビルドすると出ません。なのでOpenCVをスタティックライブラリでビルドすることで解決しそうなのですが、OpenCVの場合これがかなりややこしいです。 アプリケーションのソリューションにOpenCVの各ライブラリのプロジェクトを挿入する方法も試みたのですが、依存関係が複雑で解決しきれませんでした。 ということでOpenCVのスタティックリンクライブラリのビルド方法を知りたいのですが、Webにある情報ではうまくいかないものが多いので、いろいろな見識をうかがわせていただければ幸いです。 ■環境 VisualStudio2008Professional+OpenCV2.0or2.1+CMake
- 締切済み
- C・C++・C#
- ダイナミックリンクライブラリについて。
実行ファイルとは別に ダイナミックリンクライブラリというファイルがあって 実行時に メモリー上でこれらがリンク(連結)されて実行されます。 実行するたびにリンクするからダイナミックリンク(動的リンク)と呼びますが 反対に、実行ファイル作成した時点でライブラリもリンクしてあるのなら、 スタティックリンク(静的リンク)です。 スタティックリンクの場合、実行ファイルのサイズもそれだけ大きくなります。 と、プログラムというのは、階層構造です。 表面上に見えている機能は、プログラムそれぞれで違いますが どんなプログラムでも、ファイルの読み書きや画面の制御といったことは 行っています。 こういった階層構造の底辺の部分は、わざわざ自分で作らなくても 先人が作ってくれたもの(ライブラリ)を使い回せばよいのです。 で、疑問点が、2つあって①ダイナミックリンクライブラリとは、実行ファイルとダイナミックリンクライブラリというファイルが同時に実行される(まとめて)ということでしょうか? ②スタティックリンクで、実行ファイルのサイズもそれだけ大きくなる。とはどういうことでしょうか? ご教授頂けると幸いです。
- ベストアンサー
- C・C++・C#
- ライブラリ内の処理中におけるライブラリリンクについて
VC2005を使用しています。 ライブラリからライブラリファイルって使用できるんでしょうか? (例) A.lib内の処理に、B.DLLを明示的に読み込み処理 ----------------- <A.lib内の処理> hDLL = LoadLibrary("B.dll"); // DLLのロード if (hDLL != NULL) { ~ 処理実行 ~ } ----------------- 私の環境で何度やっても、GetLastErrorにて、 "7E"(ERROR_MOD_NOT_FOUND)が出力されます。 ロードしているパスに、B.dllは必ずあります。 上記の例は明示的リンクですが、暗黙的リンクでもかまいません。 ライブラリ処理の中でライブラリファイルを使用するには、 どうすれば良いでしょうか。 もしかして、ライブラリ内で他のライブラリを使用できない 等のオチもあるのでしょうか...。
- 締切済み
- C・C++・C#
- 共有ライブリの作成。-fPICオプションは必須?
http://0xcc.net/blog/archives/000107.html http://linuxjf.sourceforge.jp/JFdocs/Program-Library-HOWTO/shared-libraries.html UnixやLinuxで共有ライブラリのコンパイル・ビルドに-fPICや-KPICのオプションは必須ですか? 共有ライブラリ(起動時自動的にロード)で必須で、 動的ライブラリ(実行中に関数を使ってロード。)の場合、不要という事でしょうか?
- 締切済み
- C・C++・C#
- System.load() と System.loadLibrary() の違いを詳しく教えて!
javaでwebアプリを開発してます。 ※OSはLinux(Turbo10)、webサーバーはtomcat5です。 ※ネイティブメソッド呼び出しのため、シェアードライブラリをロードします。 そこで質問ですが、 System.load("フルパス付きライブラリファイル名")と System.loadLibrary("ライブラリ名")では 何が違うんでしょうか? JDK1.4のjavadocには一応 load→ダイナミックライブラリとしてローカルファイルシステムからロード loadLibrary→システムライブラリをロードします と書かれていますが、これはloadの場合は実行時にのみ参照しに行き、loadLibraryの場合はメモリ上に持つということでしょうか?
- 締切済み
- Java
- LINK : fatal error LNK1104: コンパイラは、ファイル 'DxErr9.lib' を開くことができません。
使用ソフトはvisual c++.netで DIRECTXの雑誌に付録していたファイルを使って、 ビルドしてみたのですが、 LINK : fatal error LNK1104: コンパイラは、ファイル 'DxErr9.lib' を開くことができません。 っと表示され、EXEファイルが生成されませんでした。 ライブラリファイルにちゃんと登録して、 リンカの依存する関係にも登録したのになぜ? ちなみにライブラリファイルにはちゃんと dxerr9.libはありました。
- 締切済み
- C・C++・C#
- 【C++】静的リンクと動的リンクの違い
静的リンクと動的リンクの違いについて教えてください。 ググって、wikiにて確認したところ、 動的リンクは、実行時にプログラムの結合を行う。 静的リンクは、コンパイル直後の実行ファイル生成時に、ライブラリ等を全てリンクし、必要なコードが全て揃った実行ファイルを生成する。 というのはわかりました。 それを踏まえて、 (1)-(1)libファイルで静的リンクさせるケース メソッドやプロパティのインデックスというかインタフェース仕様のみ書かれている。 そして、そのインデックスを元にコンパイルチェックを行っている。 (1)-(2)objファイルで静的リンクさせるケース objには、.cppと、.h に書かれている処理のうち、そのソース本体(そのクラス自身のモノとして持っている処理)のプロパティやメソッドのことが機械語で書かれている。 プロパティやメソッドが書かれているため、当然インタフェース仕様もわかる。 であろうと捉えていますが、この認識で大雑把には合っていますでしょうか? また、DLLを使う場合、動的リンクとは呼ばれているものの、 「DLLでは、objに加え、必要なリンクの情報まで持っている」と思われるので、 結局、リンカによるリンク実行時に、インタフェースで不整合が起きていないかはチェックされているという認識なのですが、合っていますでしょうか? (だとすると、なぜ、ある意味、DLLを使っていても静的リンクなのかなと感じ、動的リンクと呼ぶことに不自然さを感じます) 宜しくお願いいたします。 .
- ベストアンサー
- C・C++・C#
- gtkに関する質問
GTKというライブラリで、ソースを書いてコンパイルした所 数え切れない程のエラーがでてしまう(実際のソースコードは10行未満)インクルードファイルに色々構文エラーがあるみたいですが、リンクに指定するライブラリを間違えたのでしょうか。 もし間違えたのならどのライブラリとリンクすれば良いのか教えてください。(これかなと思うライブラリを色々リンクしてみましたが無理でした) ちなみに、コンパイルしたOSはLinuxでTurboLinuxというディストリビューションです。 そしてコンパイルに使ったコマンドは下記の様に書きました gcc -o GTK gtk.c -I /usr/include/gtk -lgtk -L /usr/lib
- ベストアンサー
- C・C++・C#
- .libファイルのリンク
Visual C++ 2005 Express Edition を使ってプログラミングの勉強をしています。 自分でdllを作りそれを他のプロジェクトにリンクしようとしたのですが、 .libファイルをプロジェクトに追加したところ、ダイアログボックスが出現し、 拡張子".lib"を含むビルドファイルに対するカスタムビルド規則が見つかりませんでした。 この拡張子のファイルをビルドするためのカスタムビルド規則を定義する、新しい規則ファイルを作成しますか? と聞かれました。 意味が分からないので "いいえ"にしたところ、コンパイルエラーになりました。 この場合はどうしたらいいのでしょうか??
- 締切済み
- C・C++・C#
お礼
勉強になりました。 ありがとうございました。