DLL化の単位問題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みどり

DLL化の単位問題

#1

投稿記事 by みどり » 8年前

OS MS windows10
Visual studio2015

これまで作ったC++関数やCLASSをDLL化したいですが、
当初からDLL化するつもりはなかったので、どうすれば良いのでしょうか。

例えば、関数単位でのDLL化と単一CLASS単位のDLL化
あるいは複数のCLASSをまとめてDLL化は可能でしょうか。
それからDLL化のための最適的単位があるでしょう。

YuO
記事: 947
登録日時: 14年前
住所: 東京都世田谷区

Re: DLL化の単位問題

#2

投稿記事 by YuO » 8年前

決まった単位というのはないのですが,密接に関わるものは通常一つのDLLにまとめます。

わかりやすそうな方法としては,「これはどういうDLLですか」に対して一つの答えになる間は同じDLLに含める,というのがあるかと思います。
「○○と××するDLL」ならば,「○○するDLL」と「××するDLL」に分けた方が使いやすいですし,
「○○するDLL。ただし,△△.dllが必要」というような場合で,「△△.dll」の役割が「○○で使っていた中で他から使えそうなものを分離しただけ」ならまとめた方がよいでしょう。

まぁ,例外的に実装を選択するためだったり(利用するデータベースによって実装が変わる等),プラグインとしての実装だったりすると,公開関数が一つ,ということもあるとは思いますが。


なお,関数単位でのDLL化はお薦めしません。オーバーヘッドが大きすぎます (単に共通化するだけならLIBで十分)。
また,classは実際にはマングルされた名前のメンバ関数や(static)メンバ変数が,クラスとは無関係にエクスポートされます。
このため,classをDLLにしても特定のコンパイラからしか使えず,DLLには向きません (COM化する場合を除く)。

みどり

Re: DLL化の単位問題

#3

投稿記事 by みどり » 8年前

YuO様
感謝の言葉もないですね!
これほど完璧な解説!

返信

“C言語何でも質問掲示板” へ戻る