こんにちは。
先週、「UNIXのC++で共通クラスを作りたい。」って言う質問をした
orange_pieと申します。
そのバージョンアップ質問として、作成した共通クラスをDLLにして
みんなに提供したいのですが、コンパイルはアーカイブを作る時と
どう違うのでしょうか?
ちなみに、コンパイルした後でarコマンドを使ってアーカイブを作っていました。
% gcc -c aaa.cpp
% ar -r libaaa.a aaa.o
dllを作るには、ヘッダーファイルの記述に何か特別なものが必要ですか?
また、できあがったdllを使う側では、ヘッダーファイルをインクルードして
LIBパスの通ったところにdllを入れておけば良いのでしょうか?
どなたか教えてください。
No.1ベストアンサー
- 回答日時:
> dllを作るには、ヘッダーファイルの記述に何か特別なものが必要ですか?
これは、Windows で DLL を作成するときの __declspec(dllimport) なんかを
想定した質問でしょうか?
一般的な unix 系では、特に必要ありません(「私が見たことが無い」という
方が正確な表現ですが)。
DLL に入れておきたいオブジェクトファイルを用意しておいて、
% gcc -G -o aaa.so aaa.o
という感じです。
ar コマンドで作成されるアーカイブとは違って、DLL は「リンクされたもの」
ですから、必要なオブジェクトファイルが増減したときには、追加・削除では
なく、常に再リンクをすることに注意してください。
> また、できあがったdllを使う側では、ヘッダーファイルをインクルードして
> LIBパスの通ったところにdllを入れておけば良いのでしょうか?
DLL を探すのは、LD_LIBRARY_PATH という環境変数を使います。DLL の置き場所
をそれに追加しておく感じになります。
※ でも、本当はいろいろと細かいことがあります。とりあえず ld の man が参考になると思います。
くまさん、またまたありがとうございます。
知りたかったのは、
>DLL に入れておきたいオブジェクトファイルを用意しておいて、
>% gcc -G -o aaa.so aaa.o
という部分です。
早速やってみます。
ところで、この出来上がったDLLはJAVAアプリからも使用できますよね?
それって。。。。
また勉強しまーす!!ありがとうございました(*^_^*)
No.2
- 回答日時:
> >% gcc -G -o aaa.so aaa.o
静的なアーカイブと同様に、libなんとか.so という名前にしておくと、
その DLL を使う方のプログラムのリンク時に -l オプションが使えます。
% gcc -G -o libaaa.so aaa.o
リンクする方では、
% gcc -o testX testX.cpp -laaa
> ところで、この出来上がったDLLはJAVAアプリからも使用できますよね?
またまた、蛇足をば。
(詳しくは知らないんですが)C++ で作ったクラスを、そのまま Java で
使えるんだ、という意味であれば *使用できません* 。
Native Interface というのを通して、Java 以外の言語で構築されたコードを
Java から、呼び出すことができます。
もし、情報の受け渡しが必要であれば、呼び出される Java 以外の言語で構築
されたコードの方で Java の型を意識したプログラムを書かないといけないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6.0(SP6)にて開発を行なって...
-
指定された引数が有効範囲にな...
-
res://ieframe.dll/について
-
Excel2007のVBAで、セル範囲を...
-
VB6 - DLLの動的リンクの方法に...
-
visual studioの不要なDll削除方法
-
ファイルをvbaで圧縮したいので...
-
ASP.NETのDLL入れ替えについて
-
C# ネット上に公開されているFF...
-
M365にアップデートしてからコ...
-
shell32.dll のアイコンを使っ...
-
about:blankの削除したいのです...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
<math.h>があるのにsqrtが・...
-
<unistd.h>をVisualStudioでつ...
-
C言語をコンパイルするとコンピ...
-
unsigned long long 型のフォー...
-
VBAを何回も作り直して、容量が...
-
適切な変換関数が存在しない???
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
M365にアップデートしてからコ...
-
C# DLL エントリ ポイントが...
-
visual studioの不要なDll削除方法
-
res://ieframe.dll/について
-
ASP.NETのDLL入れ替えについて
-
C++製DLLにてVB.NET関数を引数...
-
VB6.0(SP6)にて開発を行なって...
-
ファイルをvbaで圧縮したいので...
-
WIN10で常にフォームを手前に
-
VB.NET xdoc2txtをつかってPDF...
-
VC++6.0 でのライブラリ参照方法
-
VB2003で レジストリを格納する
-
user32.dllがないためアプリが...
-
エクセル マクロで指定フォルダ...
-
vb6で作成した画面が処理に時間...
-
VBAエディタのコード画面で、カ...
-
[VBA]64b版-行数表示.dllの登録...
-
指定された引数が有効範囲にな...
-
Java hs_err_pid0000.log解析
-
メイクファイルからdllを生成す...
おすすめ情報