- ベストアンサー
C++のdllの作り方を教えてください
- C++で共通クラスを作成しDLL化する方法について教えてください。
- コンパイルする際のアーカイブ作成とDLL作成の違いについて教えてください。
- DLLを使用する際のヘッダーファイルの記述方法と使用方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 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 が参考になると思います。
その他の回答 (1)
- a-kuma
- ベストアンサー率50% (1122/2211)
> >% 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 の型を意識したプログラムを書かないといけないです。
お礼
くまさん、またまたありがとうございます。 知りたかったのは、 >DLL に入れておきたいオブジェクトファイルを用意しておいて、 >% gcc -G -o aaa.so aaa.o という部分です。 早速やってみます。 ところで、この出来上がったDLLはJAVAアプリからも使用できますよね? それって。。。。 また勉強しまーす!!ありがとうございました(*^_^*)