如何为Embarcadero RAD Studio 12.1 64位Clang15编译器生成导入库?
针对C++ Builder bcc64x(Clang15)从DLL生成导入库的方法
用Clang配套的llvm-dlltool工具
因为bcc64x基于Clang15,直接用套件里的llvm-dlltool就能生成兼容的导入库。命令格式:llvm-dlltool -d 导出符号.def -l 目标.lib文件名 -D 源DLL文件名.dll
要是没有现成的.def文件,先用llvm-nm从DLL里提取符号:llvm-nm --defined-only --extern-only 源DLL文件名.dll > 符号列表.txt
接着把符号列表整理成标准.def格式:LIBRARY "源DLL文件名.dll"
EXPORTS
导出函数名1
导出函数名2 @序号 (如果DLL里带导出序号的话)调用新版implib工具
新版bcc64x套件里的implib已经适配了Clang目标,直接执行:implib -a 目标.lib文件名 源DLL文件名.dll
参数-a会自动处理符号的兼容性转换,不用手动写.def也能生成可用的导入库。无.def文件的快速处理方案
要是不想手动整理符号,用Windows SDK自带的dumpbin导出DLL的所有符号:dumpbin /exports 源DLL文件名.dll > exports.txt
从exports.txt里提取导出函数名,整理成.def文件后,再用上面的工具生成导入库。
内容的提问来源于stack exchange,提问作者Anthony West
相关产品推荐
相关产品推荐

