ページ 1 / 1
VC++のDLLの関数追加
Posted: 2013年3月10日(日) 11:34
by jyosyua
タイトルどおり、VC++のDLLの関数追加で、C++でVS2010でdllに新たに関数を追加したい場合、元のdllのソースコードを使わずに、dllと新たな関数のソースコードだけで、新たな関数が追加された新しいDLLを作る方法を教えてください。
どうかよろしくお願いいたします。
--追記--
あと別トピックだったのですが、この場を借りて、DirectSoundでriff形式のwaveの同一音楽多重再生が出来ました。ありがとうございます。Duplicate~を使ってできました。
Re: VC++のDLLの関数追加
Posted: 2013年3月10日(日) 12:01
by softya(ソフト屋)
作品お披露目の方は消しておきました。
jyosyua さんが書きました:タイトルどおり、VC++のDLLの関数追加で、C++でVS2010でdllに新たに関数を追加したい場合、元のdllのソースコードを使わずに、dllと新たな関数のソースコードだけで、新たな関数が追加された新しいDLLを作る方法を教えてください。
どうかよろしくお願いいたします。
やったことは無いですが、出来ない訳は無いと思います。
ただ、まっとうな手段で出来るかは疑問です。
そもそも何んのために必要なんでしょうか?
Re: VC++のDLLの関数追加
Posted: 2013年3月10日(日) 12:09
by jyosyua
もしこれから自分でライブラリを作りたくなったら、どうやるのかを教えてもらいたくてです。すみませんでした。
なんか知り合いの人が昔はスタティックリンクライブラリは簡単に関数を追加できたって言ってたので。
Re: VC++のDLLの関数追加
Posted: 2013年3月10日(日) 12:12
by h2so5
jyosyua さんが書きました:もしこれから自分でライブラリを作りたくなったら、どうやるのかを教えてもらいたくてです。すみませんでした。
なんか知り合いの人が昔はスタティックリンクライブラリは簡単に関数を追加できたって言ってたので。
自分でライブラリを作る場合はソースコードが存在するので問題はないのでは?
Windowsはよく分かりませんが、Linuxのスタティックライブラリはただのアーカイブなので関数を追加するのは簡単です。
Re: VC++のDLLの関数追加
Posted: 2013年3月10日(日) 12:14
by softya(ソフト屋)
ご自分で作るなら、DLL作成をプロジェクトで選ぶだけです。
作り方は検索すればいくらでもできてきますよ。
スタティックリンクライブラリはライブラリ管理ツールで追加削除も可能です。
私はVC++ではやったことがないですが。出来るんじゃないかなぁ(未確認)。
Re: VC++のDLLの関数追加
Posted: 2013年3月10日(日) 21:04
by jyosyua
皆様の温かいご支援ありがたいです。再度ググってみます。
普通のDLLファイルとDLLかつCOMファイルの作り方は分かるのですが、
本題の通りの追加方法がもし分かればと思った次第です。ありがとうございました。
Re: VC++のDLLの関数追加
Posted: 2013年3月10日(日) 21:50
by ISLe
そもそもダイナミックリンクライブラリという名前ですがDLLは実行形式です。
スタティックライブラリのオブジェクト形式とは別モノです。
Linuxだとso形式に相当しますけど、so形式ってソース無しで関数追加できましたっけ。
VC++のスタティックライブラリはLIB形式です。
LIB形式もただのアーカイブで、中身はOBJファイルです。
LIBコマンドユーティリティを使えばOBJファイルごとに追加・更新・削除できます。
ちなみにLinuxのスタティックライブラリは.a、中身は.oです。
ライブラリ形式にまとめなくてもオブジェクトファイル個別にリンクすることもできます。
Re: VC++のDLLの関数追加
Posted: 2013年3月10日(日) 21:52
by みけCAT
ISLe さんが書きました:ちなみにLinuxのスタティックライブラリは.a、中身は.oです。
細かいことですみませんが
×Linuxの
○gccの
ではないですか?
Re: VC++のDLLの関数追加
Posted: 2013年3月10日(日) 21:55
by ISLe
gccやLinuxが登場する以前(UNIXの時代)からライブラリは.aで中身は.oがスタンダードじゃなかったでしたっけ。
Re: VC++のDLLの関数追加
Posted: 2013年3月11日(月) 19:26
by jyosyua
細かいところや深いところはわかりませんが、要は実行形式とLIBのオブジェクト形式は構造が違い、ほぼ間違いなく後から実行形式のDLLに関数追加はできない。元になったソースコードが必要。
思ったんですけど、LIB形式のオブジェクトを作っといて、動作確認OKだったらDLLとかにするっていう方法はあるんでしょうか?
一般的にはどうしているんでしょう?
それとも、DLLのプロジェクトと動作確認プロジェクトを組み合わせて一つのソリューションで確認していくとか?