タイトルどおり、VC++のDLLの関数追加で、C++でVS2010でdllに新たに関数を追加したい場合、元のdllのソースコードを使わずに、dllと新たな関数のソースコードだけで、新たな関数が追加された新しいDLLを作る方法を教えてください。
どうかよろしくお願いいたします。
--追記--
あと別トピックだったのですが、この場を借りて、DirectSoundでriff形式のwaveの同一音楽多重再生が出来ました。ありがとうございます。Duplicate~を使ってできました。
VC++のDLLの関数追加
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: VC++のDLLの関数追加
作品お披露目の方は消しておきました。
ただ、まっとうな手段で出来るかは疑問です。
そもそも何んのために必要なんでしょうか?
やったことは無いですが、出来ない訳は無いと思います。jyosyua さんが書きました:タイトルどおり、VC++のDLLの関数追加で、C++でVS2010でdllに新たに関数を追加したい場合、元のdllのソースコードを使わずに、dllと新たな関数のソースコードだけで、新たな関数が追加された新しいDLLを作る方法を教えてください。
どうかよろしくお願いいたします。
ただ、まっとうな手段で出来るかは疑問です。
そもそも何んのために必要なんでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: VC++のDLLの関数追加
もしこれから自分でライブラリを作りたくなったら、どうやるのかを教えてもらいたくてです。すみませんでした。
なんか知り合いの人が昔はスタティックリンクライブラリは簡単に関数を追加できたって言ってたので。
なんか知り合いの人が昔はスタティックリンクライブラリは簡単に関数を追加できたって言ってたので。
Re: VC++のDLLの関数追加
自分でライブラリを作る場合はソースコードが存在するので問題はないのでは?jyosyua さんが書きました:もしこれから自分でライブラリを作りたくなったら、どうやるのかを教えてもらいたくてです。すみませんでした。
なんか知り合いの人が昔はスタティックリンクライブラリは簡単に関数を追加できたって言ってたので。
Windowsはよく分かりませんが、Linuxのスタティックライブラリはただのアーカイブなので関数を追加するのは簡単です。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: VC++のDLLの関数追加
ご自分で作るなら、DLL作成をプロジェクトで選ぶだけです。
作り方は検索すればいくらでもできてきますよ。
スタティックリンクライブラリはライブラリ管理ツールで追加削除も可能です。
私はVC++ではやったことがないですが。出来るんじゃないかなぁ(未確認)。
作り方は検索すればいくらでもできてきますよ。
スタティックリンクライブラリはライブラリ管理ツールで追加削除も可能です。
私はVC++ではやったことがないですが。出来るんじゃないかなぁ(未確認)。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: VC++のDLLの関数追加
皆様の温かいご支援ありがたいです。再度ググってみます。
普通のDLLファイルとDLLかつCOMファイルの作り方は分かるのですが、
本題の通りの追加方法がもし分かればと思った次第です。ありがとうございました。
普通のDLLファイルとDLLかつCOMファイルの作り方は分かるのですが、
本題の通りの追加方法がもし分かればと思った次第です。ありがとうございました。
Re: VC++のDLLの関数追加
そもそもダイナミックリンクライブラリという名前ですがDLLは実行形式です。
スタティックライブラリのオブジェクト形式とは別モノです。
Linuxだとso形式に相当しますけど、so形式ってソース無しで関数追加できましたっけ。
VC++のスタティックライブラリはLIB形式です。
LIB形式もただのアーカイブで、中身はOBJファイルです。
LIBコマンドユーティリティを使えばOBJファイルごとに追加・更新・削除できます。
ちなみにLinuxのスタティックライブラリは.a、中身は.oです。
ライブラリ形式にまとめなくてもオブジェクトファイル個別にリンクすることもできます。
スタティックライブラリのオブジェクト形式とは別モノです。
Linuxだとso形式に相当しますけど、so形式ってソース無しで関数追加できましたっけ。
VC++のスタティックライブラリはLIB形式です。
LIB形式もただのアーカイブで、中身はOBJファイルです。
LIBコマンドユーティリティを使えばOBJファイルごとに追加・更新・削除できます。
ちなみにLinuxのスタティックライブラリは.a、中身は.oです。
ライブラリ形式にまとめなくてもオブジェクトファイル個別にリンクすることもできます。
最後に編集したユーザー ISLe on 2013年3月10日(日) 21:53 [ 編集 1 回目 ]
Re: VC++のDLLの関数追加
細かいことですみませんがISLe さんが書きました:ちなみにLinuxのスタティックライブラリは.a、中身は.oです。
×Linuxの
○gccの
ではないですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: VC++のDLLの関数追加
gccやLinuxが登場する以前(UNIXの時代)からライブラリは.aで中身は.oがスタンダードじゃなかったでしたっけ。
Re: VC++のDLLの関数追加
細かいところや深いところはわかりませんが、要は実行形式とLIBのオブジェクト形式は構造が違い、ほぼ間違いなく後から実行形式のDLLに関数追加はできない。元になったソースコードが必要。
思ったんですけど、LIB形式のオブジェクトを作っといて、動作確認OKだったらDLLとかにするっていう方法はあるんでしょうか?
一般的にはどうしているんでしょう?
それとも、DLLのプロジェクトと動作確認プロジェクトを組み合わせて一つのソリューションで確認していくとか?
思ったんですけど、LIB形式のオブジェクトを作っといて、動作確認OKだったらDLLとかにするっていう方法はあるんでしょうか?
一般的にはどうしているんでしょう?
それとも、DLLのプロジェクトと動作確認プロジェクトを組み合わせて一つのソリューションで確認していくとか?