ダミーDLL – プログラミング – Home

通知
すべてクリア

ダミーDLL


wind
 wind
(@wind)
ゲスト
結合: 23年前
投稿: 10
Topic starter  

こんにちは、windです。
DLLについて質問があります。
環境はWin2000、VS6.0SP2です。

abc.dll(MFCのスタティックライブラリを使用で作成)という既存のDLLがあります。
現在、xyz.dllでabc.libとabc.hファイルをインクルードしてビルドし、abc.dllを呼び出して
います。

ここで、abc.dllのダミーDLLを作成し、そのDLLを本物のabc.dllと入れ替えると上手くいきま
せん。
ダミーDLLの作成方法は以下の通りです。
・もとのabc.dllと同じプロジェクト名、DLL名
・MFCのスタティックライブラリを使用で作成
・ファイル構成が違う
・xyz.dllで呼び出される関数宣言は同じ方法で記述(関数内部は違う動き)
・呼び出されない関数は記述してない

以上の方法で作成したDLLを本物のDLLと置き換えたのですが上手くいきません。
ここで、ダミーDLLのヘッダーファイルとlibファイルを使用してxyz.dllのビルドはしてませ
ん。以前のabc.dllでビルドされた状況です。
なんとかDLLだけを置き換えて実行させたいのですが、いい方法はないでしょうか?

よろしくお願いします。


引用解決済
トピックタグ
クラフトマン
 クラフトマン
(@クラフトマン)
ゲスト
結合: 24年前
投稿: 72
 

エクスポートはどのようにしていますか?
__declspec(dllexport)を使っている場合は、序数の制御が出来ないので、DLL側の構成が
変わった場合は、EXE側もリビルドしなければなりません。
EXE側をリビルドしなくても済むようにするには、DEFファイルを使ってエクスポートする必要
があります。

EXPORTS
func1 @1
func2 @2
func3 @3

のようにしておけば、途中の関数を削ったり、新しい関数を挿入したりしても、序数が変化
しないことが保証されます。
#関数名の修飾には注意してください

詳細は、MSDNで、『エクスポート方式』等で検索すると出てくると思います。


返信引用
wind
 wind
(@wind)
ゲスト
結合: 23年前
投稿: 10
Topic starter  

windです。
さっそくのご回答ありがとうございます。

>エクスポートはどのようにしていますか?
>__declspec(dllexport)を使っている場合は、序数の制御が出来ないので、DLL側の構成が
>変わった場合は、EXE側もリビルドしなければなりません。
>EXE側をリビルドしなくても済むようにするには、DEFファイルを使ってエクスポートする必要
>があります。

DEFファイルを使用してますが、うまくいきません。
やはりダミーのヘッダーとlibでビルドし直さなければならないのでしょうか?


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

DUMPBIN /EXPORT [DLL名]
でエクスポート関数の一覧を表示できます。
(DUMPBINは、VC++付属ツール)

2つのDLLで、序数(ordinal)と名称が一致しているか
確認してみてください。


返信引用
どうでもいいやつ
 どうでもいいやつ
(@どうでもいいやつ)
ゲスト
結合: 23年前
投稿: 4
 

> DUMPBIN /EXPORT [DLL名]
/EXPORTS ですね。


返信引用
wind
 wind
(@wind)
ゲスト
結合: 23年前
投稿: 10
Topic starter  

序数は合ってました。
しかし、Summaryの.data部分が
本物DLL 7000 .data
偽者DLL 8000 .data
になっていました。

Summaryというのはなんでしょうか?また、これが関係あるのでしょうか?

よろしくお願いします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました