OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

C++のdllの作り方を教えてください。

  • すぐに回答を!
  • 質問No.143960
  • 閲覧数197
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 87% (34/39)

こんにちは。
先週、「UNIXのC++で共通クラスを作りたい。」って言う質問をした
orange_pieと申します。
そのバージョンアップ質問として、作成した共通クラスをDLLにして
みんなに提供したいのですが、コンパイルはアーカイブを作る時と
どう違うのでしょうか?
ちなみに、コンパイルした後でarコマンドを使ってアーカイブを作っていました。
% gcc -c aaa.cpp
% ar -r libaaa.a aaa.o
dllを作るには、ヘッダーファイルの記述に何か特別なものが必要ですか?
また、できあがったdllを使う側では、ヘッダーファイルをインクルードして
LIBパスの通ったところにdllを入れておけば良いのでしょうか?
どなたか教えてください。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

> 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 が参考になると思います。
お礼コメント
orange_pie

お礼率 87% (34/39)

くまさん、またまたありがとうございます。
知りたかったのは、

>DLL に入れておきたいオブジェクトファイルを用意しておいて、
>% gcc -G -o aaa.so aaa.o

という部分です。
早速やってみます。
ところで、この出来上がったDLLはJAVAアプリからも使用できますよね?
それって。。。。
また勉強しまーす!!ありがとうございました(*^_^*)
投稿日時 - 2001-10-01 11:21:18
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル14

ベストアンサー率 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 > ところで、 ...続きを読む
> >% 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で解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ