dll生成lib
來自http://suddymail.org/show-160-1.html
沒有嘗試過,僅供參考。
其他鏈接:http://hi.baidu.com/songxiuying/item/af67755203840f948d12ed6d
為無LIB的DLL制作LIB函數符號輸入庫 ??
? 本文介紹了在VC中針對無LIB時的DLL隱式鏈接,制作可供VC++使用的LIB函數符號輸入庫。具體步驟如下: ??
? ??
? ? 一、使用VC++的工具DUMPBIN將DLL中的導出函數表導出到一定義(.DEF)文件 ??
? EXAMPLE: ? ??
? ??
? DUMPBIN ? VideoDeCoder.dll ? /EXPROTS ? /OUT:VideoDeCoder.def ??
? ? 二、將導出的.DEF文件整理為一符合.DEF個數的函數導出文件 ??
? EXAMPLE:VideoDeCoder.DEF ? 文件內容如下Dump ? of ? file ? VideoDeCoder.dll ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? File ? Type: ? DLL ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? Section ? contains ? the ? following ? exports ? for ? VideoDeCoder.dll ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0 ? characteristics ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? 3D49E48F ? time ? date ? stamp ? Fri ? Aug ? 02 ? 09:46:55 ? 2002 ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0.00 ? version ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 ? ordinal ? base ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 11 ? number ? of ? functions ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 11 ? number ? of ? names ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ordinal ? hint ? RVA ? ? ? ? ? ? name ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 ? ? ? ? 0 ? 00010F60 ? _TM_ClearDecoderBuff@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? 1 ? 00010E80 ? _TM_CloseDecoder@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? 2 ? 00010F00 ? _TM_DecodePicture@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4 ? ? ? ? 3 ? 00010ED0 ? _TM_DecodePictureHeader@4 ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? 4 ? 00010FD0 ? _TM_GetFileEnd@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 6 ? ? ? ? 5 ? 00011030 ? _TM_GetUValue@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7 ? ? ? ? 6 ? 00011060 ? _TM_GetVValue@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 8 ? ? ? ? 7 ? 00011000 ? _TM_GetYValue@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 9 ? ? ? ? 8 ? 00010E10 ? _TM_OpenDecoder@8 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 10 ? ? ? ? 9 ? 00010F30 ? _TM_ReturnType@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 11 ? ? ? ? A ? 00010F90 ? _TM_SetFileEnd@8 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? Summary ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2000 ? .data ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1000 ? .rdata ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1000 ? .reloc ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 15000 ? .text ? ??
? 按照以下方法整理: ??
? 1)添加LIB說明 ? LIBRARY ? "VideoDeCoder" ? ? ? ? ? ? ? ? ? ? ? ? ;"xx"為DLL名稱 ??
? DESCRIPTION ? "VideoDeCoder ? library" ? ? ??
? 2)去掉導出函數說明端以外的內容,在LIB說明下添加 ? "EXPROTS" ? 說明導出函數 ? LIBRARY ? "VideoDeCoder" ??
? DESCRIPTION ? "VideoDeCoder ? library" ??
? ??
? EXPORTS ??
? ? ? ? ? ? ? ? ? ? ? ? ? ordinal ? hint ? RVA ? ? ? ? ? ? name ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 ? ? ? ? 0 ? 00010F60 ? _TM_ClearDecoderBuff@4 ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? 1 ? 00010E80 ? _TM_CloseDecoder@4 ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? 2 ? 00010F00 ? _TM_DecodePicture@ ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4 ? ? ? ? 3 ? 00010ED0 ? _TM_DecodePictureH ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? 4 ? 00010FD0 ? _TM_GetFileEnd@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 6 ? ? ? ? 5 ? 00011030 ? _TM_GetUValue@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7 ? ? ? ? 6 ? 00011060 ? _TM_GetVValue@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 8 ? ? ? ? 7 ? 00011000 ? _TM_GetYValue@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 9 ? ? ? ? 8 ? 00010E10 ? _TM_OpenDecoder@8 ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 10 ? ? ? ? 9 ? 00010F30 ? _TM_ReturnType@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 11 ? ? ? ? A ? 00010F90 ? _TM_SetFileEnd@8 ? ??
? 3)將所有的函數放至行首,去掉 ? "hint" ? 和 ? "RVA" ? 數據,留下函數的序號 ? "ordinal" ? ,在序號前加上 ? "@" ? 符號 ? 形成 ? "_導出函數名@參數字節和 ? @序號" ? 此種格式(__stdcall ? 方式調用導出的函數符號是 ? "函數名稱@參數字節和"). ? 最后形成.DEF文件如下: ? LIBRARY ? "VideoDeCoder" ??
? ? ? DESCRIPTION ? "VideoDeCoder ? library" ??
? ??
? ? ? EXPORTS ??
? ? ? ? ? ? ? ??
? ? ? TM_ClearDecoderBuff@4 ? ? ? ? ? ? ? ? ? ? ? ? ? @1 ? ? ? ? ??
? ? ? TM_CloseDecoder@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @2 ? ? ? ? ??
? ? ? TM_DecodePicture@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @3 ? ? ? ? ??
? ? ? TM_DecodePictureHeader@4 ? ? ? ? ? ? ? ? ? ? @4 ? ? ? ? ??
? ? ? TM_GetFileEnd@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @5 ? ? ? ? ??
? ? ? TM_GetUValue@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @6 ? ? ? ? ??
? ? ? TM_GetVValue@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @7 ? ? ? ? ??
? ? ? TM_GetYValue@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @8 ? ? ? ? ??
? ? ? TM_OpenDecoder@8 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @9 ? ? ? ? ??
? ? ? TM_ReturnType@4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @10 ? ? ? ? ??
? ? ? TM_SetFileEnd@8 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @11 ? ??
? ? 三、使用VC++的LIB工具,帶/DEF:(.def文件名) ? /MACHINE:IX86(80X86機器),就輸出符合VC++格式的的LIB文件了. ? ??
? EXAMPLE:LIB ? /DEF:VideoDeCoder.def ? /MACHINE:IX86 ??
? ? 四、接時帶上LIB文件鏈接;注意的是當有些動態庫DUMPBIN的只有函數名,無"@nn"的參數格式,如C++Builder寫的DLL,輸出就只有 函數名符號,鏈接時就會報錯: ? error ? LNK2002:unresolved ? external ? symbol ? "functionname@nn" ? 提示程序中引入的函數符號無法識別,這時只要將DEF文件中相應的函數名稱改為functionname@nn方式,重新建立 ? LIB,重新鏈接即可.
總結
- 上一篇: C语言返回文件大小的功能(fseek和f
- 下一篇: MFC程序在其他机器运行