ptlib 中MergeSym
1:MergeSym的作用似乎是将静态库(static lib)转换成def
2:MergeSym项目依赖OPAL_Static; 假如OPAL_Static依赖了其他DLL注意在MergeSym项目的生成后事件中COPY该DLL到MergeSym的生成目录;
3:MergeSym的命令行格式:
MergeSym [ -v ] [ -s ] [ -d dumpbin ] [ -x deffile[.def] ] [-I libfilepath ] libfile[.lib] [ deffile[.def] [ outfile[.def] ] ]
example:
-I C:/Program Files/Microsoft Visual Studio 8/VC/lib;C:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib;C:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib/i386;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib;C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/lib;C:/Program Files/Microsoft Visual Studio 8/;C:/Program Files/Microsoft Visual Studio 8/lib -x Debug/ptlibd.def -x e:/323/opal/src/win32//Private.def ./../../lib/opalsd.lib e:/323/opal/src/win32/opald_2005.dtf ./../../lib/Debug/opald.def
-I :表示的是LIB的默认路径 可能./../../lib/opalsd.lib 的依赖LIB到以上的目录中找到加载;
-x :输入的DEF文件
libfile[.lib]:需要分割的STATIC LIB
[ deffile[.def] [ outfile[.def] ] ]输出的DEF
4:大概的步骤:
(1)用DUMPBIN+/symbols + lib_filename 将STATIC LIB文件用DUMPBIN+/symbols 命令导出symbols信息到临时的SYM文件
(2)从SYM文件中提取Symbol与输入的DEF文件比较,采取添加或者移除 从而生成新的DEF文件;
有了新的DEF就可以生成DLL 和 LIB 了参见PTlib_DLL和OPAL_DLL项目 只有DllMain(HANDLE hinstDLL, DWORD fdwReason, LPVOID)函数