如何将 32 位 *.lib 文件转换为 64 位 *.a 文件
Posted
技术标签:
【中文标题】如何将 32 位 *.lib 文件转换为 64 位 *.a 文件【英文标题】:How to transform 32 bit *.lib files to 64 bit *.a files 【发布时间】:2021-05-12 10:34:42 【问题描述】:我目前正在将 32 位 c++ 程序(使用 C++ Builder)移植到 64 位代码。应用程序正在链接第 3 方 dll,并且 32 位编译器项目包含关联的 lib 文件,像往常一样。 在 64 位模式下,这些“.lib”文件需要转换为扩展名为“.a”的档案。我知道有一个转换工具(一个简单的可执行文件)我曾经成功使用过一次。但我不记得那个工具的名字了。有人可以帮我吗?
【问题讨论】:
恕我直言,最好的方法是使用 64 位编译器设置重建库文件。将 32 位库与 64 位库混合使用时,可能会出现许多错误。 这些“.lib”文件需要转换为扩展名为“.a”的档案你很可能会遇到问题尝试即使您可以解决 32 到 64 位问题,也要混合编译器。您可能必须使用要用于您的应用程序的编译器重新构建第三方软件。 @rustyx "在 Windows 上,即使在 64 位模式下,您仍然需要一个 .lib 文件。" - 在 C++Builder 中,甚至在 Windows 上,它的 64 位编译器使用.a
文件进行 DLL 导入,请参阅 BCC64 和 MKEXP.EXE。
【参考方案1】:
没有将 32 位本机代码转换为 64 位本机代码的工具。也没有工具可以将 cl
库 (.lib
) 转换为 gcc 库 (.a
)。
【讨论】:
【参考方案2】:如果您的 32 位 .lib
文件是 DLL 导入库,您可以从 DLL 本身创建新的 64 位导入库。 C++Builder 有一个 MKEXP.EXE 工具用于此目的。
如果您的 32 位 .lib
文件是静态库,则无法将它们从 32 位转换为 64 位,需要使用 64 位编译器重新编译。
【讨论】:
以上是关于如何将 32 位 *.lib 文件转换为 64 位 *.a 文件的主要内容,如果未能解决你的问题,请参考以下文章