我有一个导出的 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
现在项目链接没有任何问题。但是,当我尝试运行它时,我收到了消息
“无法在动态链接库 simple.dll 中找到过程入口点 Foo@0”
所以看起来即使我告诉 lib.exe Foo@0 是 Foo 的别名,它仍然会创建一个尝试按名称加载“Foo@0”的导入库。
当我要求“Foo@0”时,有没有办法让导入库加载“Foo”?
谢谢,
大卫