- ベストアンサー
Borland C++ Compiler でスタティックリンクライブラリを作る
現在、Borland C++ Compilerを使ってプログラミングをしています。 自分で作った汎用ヘッダファイルを、いちいちコピー&ペーストして、新しいプロジェクトごとに入れるのはめんどうなので、何かいい方法がないかと探していました。 すると、なにやらスタティックリンクライブラリというのがあつらえ向きだと思ったのですが、やり方がよくわかりません。 ちなみに、できればDLLは作りたくないです。 もしかして、Borlandのではできないのでしょうか。 どなたか、ご存知の方がいらっしゃいましたらご教授ください。
- C・C++・C#
- 回答数3
- ありがとう数2
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
どちらにしても、汎用のヘッダファイルやソースをプロジェクトごとにコピーするというのは、適切ではありません。 面倒だという以上に、本来同じもはずのものが複数存在すると、かならず内容の違ったもの(終生忘れなど)ができてきてしまうからです。 また、「スタティックリンクライブラリ」というもの自体は、dll や、動的につなぐライブラリの情報を、通常の lib ファイルとして生成しておくものです。メーカーが提供する dll など、スタティックリンクライブラリを作成すれば、このスタティックリンクライブラリをプロジェクトにつなぐだけで、dll を呼び出すことができます。 さて、本題ですが、自作の標準ヘッダをいつも使うようにするには ・オプション → プロジェクト で、ヘッダインクルードファイルのディレクトリに、自作のヘッダのディレクトリを追加しておく ・#inlcude のあとのファイル指定に、フルパスでファイル名を記述しておく。 のいずれかの方法があります。 また、自作のソースをいつも使う場合には、 ・ライブラリアン(tlib.exe)で、ソースをライブラリにした上で、オプション → プロジェクトで、ライブラリのディレクトリにそのディレクトリを追加しておく ・プロジェクトにファイルを追加するときに、(プロジェクトのフォルダではなく)そのソースファイルが存在するフォルダのソースを追加する のいずれかがあります。 私は、いずれも後者の方法でやっています。
その他の回答 (2)
- yama5140
- ベストアンサー率54% (136/250)
(ご質問主旨を取り違えていたら、ごめんなさい) >自分で作った汎用ヘッダファイル(◆)を、いちいちコピー&ペーストして、 >新しいプロジェクトごとに入れるのはめんどうなので、 ★これって1行だけですよね、「めんどう」ですか? ソースの頭に、インクルード文を書くだけでは・・?。 #include "Org.h" ◆が、ラムディスク等の開発現場(?)にある場合。 #include <Org.h> ◆を、Borland C++ Compilerの include フォルダにコピーしておいた場合。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
tlib.exe(コンパイラ・セットに含まれています)でライブラリが作れます。 マニュアルを読んでください。
関連するQ&A
- Borland C++ Compilerで画像を扱うには
基本情報技術者検定の問題でhttp://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H9a2/pm07.html のプログラムをBorland C++ Compilerで作りたいのですが、画像が扱えないみたいなので調べてみたところ http://www.boutell.com/gd/のライブラリがあれば 画像が扱えるとどこかで見たのですが、これって Borland C++ Compilerにも使えるのでしょうか?
- ベストアンサー
- C・C++・C#
- Borland C++ Compiler
学校のC言語の授業で使用するので、Borland C++ Compilerをインストールしました。 今までに作ったプログラムや、教科書に載っていたサンプルプログラムをコンパイルして軽い勉強をしていたのですが、コンパイルの際にエラーが出るようになりました。 コマンドプロンプトでbcc32と打つと、パラメータのリストのようなものが出てくるので、-nなど適当にパラメータをつけて実行したら以下のようなエラーが出るようになりました。 Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland test.c: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照) objとtdsファイルは出力されるのですが、exeが出力されません。 どうやったらなおるか、教えてください。
- 締切済み
- C・C++・C#
- Borland C++ Compiler について…
こんにちは。 Borland C++ Compiler 5.5 をダウンロードして、 メモ帳で、プログラムを書き (一番最初にたいていの人が書く例のアレ。) コマンドプロンプトでコンパイル…。 できません。どうしてでしょう?というのが質問です。 もちろん環境変数は設定しました。 変数名 > path 変数値 > C:\Borland\bcc55\bin このように。 実際にコンパイルすると 'bcc32' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と警告が出ます。 さらに、直接 C:\borland\bcc55\Bin\bcc32 と入力すると、コンパイルしてくれるようです。 が、ここでも別のエラーがでます。 エラー E2133: コマンド 'ilink32.exe' を実行できない と。 まとめ 1.コンパイルができない(環境変数関係?) 2.ilink32.exe が実行できない 以上の2点について、解決策をご存知の方がおられましたら、 ご教授願いたく存じます。
- ベストアンサー
- C・C++・C#
- ライブラリのリンクについて
Visual Studio net 2003 で プログラミングを始めたばかりの初心者です。 先日 猫でもわかるwindows プログラミング(第2版)の本をつかって p415にある説明どうりに 第13章のコモンコントロールのプロジェクトにライブラリをリンクさせようとしたのですが、その第13章で必要と思われるcomctl32.libが見つかりません。このライブラリがないせいか、この章でつくったプログラムには fatal error がでてきてしまいます。 いったいcomctl32.libはどこにあるのでしょうか? 一応ライブラリのリンクの仕方もよろしければご教授ください。説明に不足があれば追加致しますのでよろしくお願いします。
- ベストアンサー
- C・C++・C#
- BorlandとJNA
BorlandとJNA 自作のcppファイルからJavaのJNA用のdllを作成する方法を教えてください。 使っているのはBorland C++ Compilerです。 > bcc32 -tWD ○○○.cpp これだけでは「外部シンボル_main 未解決」が出ます。 よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- Borland C++ Compiler 5.5でland関数がコンパイルできません
初歩的な質問ですみません。C言語のプログラミングの質問です。 タイトルどおり、Borland C++ Compiler 5.5でland関数がコンパイルできません。OSはWindows XPで、「c言語を始めよう!」を使ってプログラムを作っています。 今まで学校でunixを使っていたので、その時は何の設定もせずに使えたので普通に使ったのですが、”プロトタイプ宣言のない関数 'rand' の呼び出し”や”プロトタイプ宣言のない関数 'srand' の呼び出し”というエラーが出ます。 timeを使うために#include <time.h>が必要だったり、そのようなunixでは不必要だった下準備が必要なのでしょうか?
- ベストアンサー
- C・C++・C#
- Borland C++ Builderによるdll作成について
Borland C++ Builderを使用してプロジェクトをコンパイル してdllを作成する際、コンパイルに成功してあるdllができたとして、 その後プロジェクトに何の変更もなく、再コンパイルすると dllの中身は何か変わっているのでしょうか? 例えば、コンパイル日時の情報が中に書き込まれているなど。 サイズが変わることもあるのでしょうか?
- ベストアンサー
- その他(ITシステム運用・管理)
- 静的リンクライブラリについて
WindowsのライブラリにDLLやLIBといった形式があり、それぞれ「動的リンクライブラリ」「静的リンクライブラリ」となっていますが、 静的リンクライブラリとしてビルドされたライブラリを、動的に実行プログラムにリンクさせることは(Cやアセンブラなどの)実装次第で可能なのでしょうか? ビルド時にリンカがやってくれてることを実行時に行えればOK・・・という素直な話ではないのでしょうか。DLLも実行時にGetProcAddress()などを使ってアドレス解決をするわけですし、LIBでも同じことをするのは不可能ではないのでは?と思ったのです。 ※動的/静的リンクの概念や具体的な使用方法などはネット上で調べることができましたが、中身にまで踏み込んだ解説をしているページには巡り合えませんでした。そういう具体的な解説のあるページの紹介だけでもとても助かります。また、「根本的に思い違いをしてるんでは?」というご指摘も非常に助かります。 ※私自身↑に対する需要はないのでコスト・メリットとかは度外視です。興味本位というやつです。 ※別段、Windowsやライブラリの形式にこだわりがあるわけではないですが、これが一番メジャーだろう、ということでWindowsのDLL/LIBを対象に質問させて頂きました。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- BCBでVC++のDLLを利用するために
C++Builder5で、VC++で作ったDLLを利用する必要に駆られてしまいました。 提供されているのはDLL本体とヘッダの2点で、BCBからリンクするために、implibを使ってdllからlibの作成をし、プロジェクトに加え、ヘッダをインクルードしました。続けて試しにコードを書いたところ、 '外部シンボル_initialize_libraryが未解決' との表示。(initialize_libraryとはDLL内にある関数です。) 調べてみたところ、 1.呼び出し規約は標準で __stdcall 2.VC++ では、_ がシンボル名の頭に付く 3.Builder ではつかない これで食い違いが生じているんだと思うのですが、更に調べると、モジュール定義ファイルにて再定義をすれば良いとの結論になりました。 BorlandのFAQも見たのですが、書式が理解できなくて・・・そこで質問させて頂きたいのですが、単純にproject名.defを作って、 >IMPORTS >initialize_library=_initialize_library とやってプロジェクトに加えれば良いのでしょうか? ソース本体にextern "C" というのも必要なようですが、こちらの記述も教えて頂けたら嬉しいです。
- ベストアンサー
- C・C++・C#
お礼
おお!やっとできました! cmd上でtlibと打ち込んでやっていましたが、よくわからない・・・。 と思っていたら、ちゃんとヘルプなんてものがあったんですね。。。日本語の。(あたりまえか; ちなみに、 bcc32 -c test.cpp でtest.objを作成し、 tlib MyLib +test とやることでできました。 本当に助かりました!みなさん、ありがとうございます!