VC++のDLLの関数追加

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
jyosyua
記事: 65
登録日時: 13年前
住所: 八王子市
連絡を取る:

VC++のDLLの関数追加

#1

投稿記事 by jyosyua » 11年前

タイトルどおり、VC++のDLLの関数追加で、C++でVS2010でdllに新たに関数を追加したい場合、元のdllのソースコードを使わずに、dllと新たな関数のソースコードだけで、新たな関数が追加された新しいDLLを作る方法を教えてください。
どうかよろしくお願いいたします。

--追記--
あと別トピックだったのですが、この場を借りて、DirectSoundでriff形式のwaveの同一音楽多重再生が出来ました。ありがとうございます。Duplicate~を使ってできました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: VC++のDLLの関数追加

#2

投稿記事 by softya(ソフト屋) » 11年前

作品お披露目の方は消しておきました。
jyosyua さんが書きました:タイトルどおり、VC++のDLLの関数追加で、C++でVS2010でdllに新たに関数を追加したい場合、元のdllのソースコードを使わずに、dllと新たな関数のソースコードだけで、新たな関数が追加された新しいDLLを作る方法を教えてください。
どうかよろしくお願いいたします。
やったことは無いですが、出来ない訳は無いと思います。
ただ、まっとうな手段で出来るかは疑問です。
そもそも何んのために必要なんでしょうか? 
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

jyosyua
記事: 65
登録日時: 13年前
住所: 八王子市
連絡を取る:

Re: VC++のDLLの関数追加

#3

投稿記事 by jyosyua » 11年前

もしこれから自分でライブラリを作りたくなったら、どうやるのかを教えてもらいたくてです。すみませんでした。
なんか知り合いの人が昔はスタティックリンクライブラリは簡単に関数を追加できたって言ってたので。

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: VC++のDLLの関数追加

#4

投稿記事 by h2so5 » 11年前

jyosyua さんが書きました:もしこれから自分でライブラリを作りたくなったら、どうやるのかを教えてもらいたくてです。すみませんでした。
なんか知り合いの人が昔はスタティックリンクライブラリは簡単に関数を追加できたって言ってたので。
自分でライブラリを作る場合はソースコードが存在するので問題はないのでは?

Windowsはよく分かりませんが、Linuxのスタティックライブラリはただのアーカイブなので関数を追加するのは簡単です。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: VC++のDLLの関数追加

#5

投稿記事 by softya(ソフト屋) » 11年前

ご自分で作るなら、DLL作成をプロジェクトで選ぶだけです。
作り方は検索すればいくらでもできてきますよ。

スタティックリンクライブラリはライブラリ管理ツールで追加削除も可能です。
私はVC++ではやったことがないですが。出来るんじゃないかなぁ(未確認)。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

jyosyua
記事: 65
登録日時: 13年前
住所: 八王子市
連絡を取る:

Re: VC++のDLLの関数追加

#6

投稿記事 by jyosyua » 11年前

皆様の温かいご支援ありがたいです。再度ググってみます。
普通のDLLファイルとDLLかつCOMファイルの作り方は分かるのですが、
本題の通りの追加方法がもし分かればと思った次第です。ありがとうございました。

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: VC++のDLLの関数追加

#7

投稿記事 by ISLe » 11年前

そもそもダイナミックリンクライブラリという名前ですがDLLは実行形式です。
スタティックライブラリのオブジェクト形式とは別モノです。
Linuxだとso形式に相当しますけど、so形式ってソース無しで関数追加できましたっけ。

VC++のスタティックライブラリはLIB形式です。
LIB形式もただのアーカイブで、中身はOBJファイルです。
LIBコマンドユーティリティを使えばOBJファイルごとに追加・更新・削除できます。

ちなみにLinuxのスタティックライブラリは.a、中身は.oです。

ライブラリ形式にまとめなくてもオブジェクトファイル個別にリンクすることもできます。
最後に編集したユーザー ISLe on 2013年3月10日(日) 21:53 [ 編集 1 回目 ]

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: VC++のDLLの関数追加

#8

投稿記事 by みけCAT » 11年前

ISLe さんが書きました:ちなみにLinuxのスタティックライブラリは.a、中身は.oです。
細かいことですみませんが
×Linuxの
○gccの
ではないですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: VC++のDLLの関数追加

#9

投稿記事 by ISLe » 11年前

gccやLinuxが登場する以前(UNIXの時代)からライブラリは.aで中身は.oがスタンダードじゃなかったでしたっけ。

jyosyua
記事: 65
登録日時: 13年前
住所: 八王子市
連絡を取る:

Re: VC++のDLLの関数追加

#10

投稿記事 by jyosyua » 11年前

細かいところや深いところはわかりませんが、要は実行形式とLIBのオブジェクト形式は構造が違い、ほぼ間違いなく後から実行形式のDLLに関数追加はできない。元になったソースコードが必要。
思ったんですけど、LIB形式のオブジェクトを作っといて、動作確認OKだったらDLLとかにするっていう方法はあるんでしょうか?
一般的にはどうしているんでしょう?
それとも、DLLのプロジェクトと動作確認プロジェクトを組み合わせて一つのソリューションで確認していくとか?

閉鎖

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