例如,如果我有一个导出符号 __ugly_name 的 libtest.dll 文件,我想在源文件和 lib 文件中使用 pretty_name,我可以这样做
D:\var\tmp\build>type t-dll.c
main() { pretty_name(); }
D:\var\tmp\build>type libtest.def
EXPORTS
pretty_name == __ugly_name
D:\var\tmp\build>dlltool -k -m i386 --input-def libtest.def --dllname libtest.dll --output-lib libtest.dll.a
D:\var\tmp\build>gcc -o t-dll.exe t-dll.c -L. -ltest
The result t-dll.exe reference symbol '__ugly_name' in libtest.dll file.
VERY GOOD !
But for MS lib.exe, 'pretty_name=__ugly_name' does not do the trick:
D:\var\tmp\build>type libtest.def
EXPORTS
pretty_name=__ugly_name
D:\var\tmp\build>cl /nologo /MD /Fet-dll-vc.exe t-dll.c libtest.lib
t-dll-vc.exe still reference non-exist symbol 'pretty_name' in libtest.dll file.
可悲的是。MS lib.exe 是否支持 DLL 符号重定向?谢谢。