我有一个导出 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文件开始:
我从以下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”呢?谢谢,David