エクスポートするdllがあります
extern "C" __declspec(dllexport) int __stdcall Foo( void );
dllのダンプは示しています
******************************************************************************
Section: Exports
File Offset: 00001400 (5120)
Flags: 00000000
Time Stamp: 00000000
Major Version: 0000
Minor Version: 0000
Exports from simple.dll
3 exported name(s), 3 export addresse(s). Ordinal base is 1.
Sorted by Name:
RVA Ord. Hint Name
-------- ---- ---- ----
00002104 3 0000 std::nothrow
00001258 2 0001 Foo
000020F8 1 0002 ___CPPdebugHook
******************************************************************************
私は次のdefファイルから始めました:
LIBRARY simple.dll
EXPORTS
Foo
これにより、次のエクスポートを含むlibファイルが作成されました。
Exports
ordinal name
_Foo
このライブラリにリンクすると、msvcリンカーが_Foo@0が見つからないと文句を言います。この問題を修正するために、defファイルにエイリアスを追加しました。
LIBRARY simple.dll
EXPORTS
Foo
Foo@0=Foo
これにより、エクスポートを含むlibファイルが作成されます
Exports
ordinal name
_Foo
_Foo@0
これで、プロジェクトは問題なくリンクされます。しかし、実行しようとすると、メッセージが表示されます
プロシージャエントリポイントFoo@0がダイナミックリンクライブラリsimple.dllに見つかりませんでした。」
したがって、lib.exeにFoo @ 0はFooのエイリアスであると伝えたとしても、名前で「Foo@0」を読み込もうとするインポートライブラリが作成されるようです。
「Foo@0」を要求したときに、インポートライブラリに「Foo」をロードさせる方法はありますか?
ありがとう、
デビッド