如何解决 C++Builder 中的链接器错误“LIBCURL.LIB 包含无效的 OMF 记录,类型 0x21(可能是 COFF)”?

Posted

技术标签:

【中文标题】如何解决 C++Builder 中的链接器错误“LIBCURL.LIB 包含无效的 OMF 记录,类型 0x21(可能是 COFF)”?【英文标题】:How to solve linker error "LIBCURL.LIB contains invalid OMF record, type 0x21 (possibly COFF) " in C++Builder? 【发布时间】:2017-02-10 08:54:40 【问题描述】:

我在 Embarcadero C++ Builder XE 中尝试使用 libcurl 时遇到链接器错误:

[ILINK32 错误] 错误:'C:...\CURL-7.52.1\BUILD\WIN32\VC8\DLL RELEASE\LIBCURL.LIB' 包含无效的 OMF 记录,类型 0x21(可能是 COFF)

我在 Visual Studio 2005 中构建了 curl-7.52.1 库。

构建后我可以得到libcurl.dlllibcurl.lib

我在 VS 2005 中尝试了一个示例项目,并且能够执行它。

但我想在 C++Builder 中使用 libcurl。

如果我在我的 C++Builder 项目中使用 VS 2005 中构建的相同库,则会出现链接器错误。

你能帮帮我吗?如何在我的 C++Builder 项目中使用 libcurl 库?

【问题讨论】:

【参考方案1】:

C++Builder 的 .lib 文件格式 (OMF) 与 MS Visual Studio 的格式 (COFF) 不同。您应该能够使用 C++Builder 的 IMPLIB command-line utility 从 DLL 中创建兼容的 .lib 文件:

implib.exe -a LIBCURL_BCB.LIB LIBCURL.DLL

然后将此LIBCURL_BCB.LIB 文件添加到您的项目中而不是您在VC++ 中编译libcurl 时获得的.lib 文件。

-a 开关用于为__cdecl 函数生成下划线。

在我的电脑上,我只有 C++Builder 5,它的implib.exe 在这个文件夹中找到:

C:\Program Files (x86)\Borland\CBuilder5\Bin\

【讨论】:

我复制 DLL 然后运行你给出的命令::::::: C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin>imlib.exe LIBCURL_BCB.lib libcurl .dll 。 CodeGear Implib 版本 3.2.0 版权所有 (c) 1991-2009 CodeGear 致命错误 LIBCURL_BCB.lib:无法打开输出文件 @PratikMota 您可能在只读目录中。将目录更改为您的项目。 @n.m.是的,我已经在不同的文件夹中使用了 implib 并尝试过。它创建了新库............但仍然有一些链接错误......项目属性 - >目录和条件包括路径:- C:\ ..... \ LIBCURLDemo \ curl -7.52.1\include 库路径:- C:\....\LIBCURLDemo\curl-7.52.1\build\Win32\VC8\DLL Release 我还在项目中添加了库并删除了“仅按名称链接”= ================ 但它仍然给出链接器错误 [ILINK32 错误] 错误:未解析的外部 '_curl_global_init' 从 C:\....\SOURCE\APPLICATION\OBJ\ 引用NEWFILE.OBJ ...等如何解决? libcurl.lib (15KB) 使用 implib.exe 新建,libcurl_bcb.lib (7KB) ,有什么问题吗?? @borisbn 哇......非常好......它的工作原理。真的非常感谢你..!!

以上是关于如何解决 C++Builder 中的链接器错误“LIBCURL.LIB 包含无效的 OMF 记录,类型 0x21(可能是 COFF)”?的主要内容,如果未能解决你的问题,请参考以下文章

Borland C++ Builder 6 上的奇怪链接器错误

当我想在 C++ Builder Starter 中链接静态库 TinyXML 2 的发布版本时,为啥会出现未解决的外部错误?

如何解决 Firebase 中的 Apple Mach-O 链接器错误?

c 编程中 mysql.h 的链接器错误

如何解决 Interface Builder Xcode 中的 stackview 错误问题?

C++ / VS 2012 - 多项目解决方案:一个项目中的链接器错误但另一个项目中没有