1

我正在使用 Embarcadero XE8 C++ builder 32 位。

我在我的程序中添加了一个库来解决Unresolved external error.

当我添加库时,我得到了标题中的错误。于是我在网上搜索,在stackoverflow上找到了这个话题: Linker error "contains invalid OMF record"

正如它所说的 COFF2OMF 工具,可以工作。遗憾的是它对我不起作用,我提供了一个 7mb 的库文件,当我使用该工具转换它时它只有 41kb ......所以我猜转换失败了。当我将转换后的文件添加到我的程序时,它只是忽略它并仍然显示unresolved external error.

那么如何让我的库与我的 C++ 构建器一起工作呢?

4

1 回答 1

2

一点背景:

库需要使用与您尝试创建的应用程序相同的工具进行编译,因为每个编译器的处理方式都略有不同。大多数 Windows 库都是使用 MVSC(Microsoft Visual Studio 编译器)编译的。

您正在使用 Embarcardero 编译器,这意味着 MVSC 库不兼容(您可能已经注意到 ;))。

您有多种选择。

  1. 如果可以,请获取库的源代码并使用您自己的编译器进行编译。这样成功的机会是最高的。
  2. 我可能弄错了,因为已经有一段时间了,但是我相信有一个名为的工具implib可以获取共享库 (.dll) 并从中生成一个 Embarcardero 风格的 .lib 以在您的项目中使用。
  3. 用于COFF2OMF转换静态库。即使文件大小很奇怪,也至少尝试一下。
  4. 试试LoadLibrary函数调用。这需要您手动映射所需的功能,但是您可以使用.lib.

祝你好运。

于 2015-09-21T13:01:06.160 回答