链接器错误“包含无效的OMF记录”2

时间:2015-09-21 12:52:33

标签: c++ c++builder coff omf

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

我在我的程序中添加了一个库来解决Sequelize-cmd

当我添加库时,我收到了标题中的错误。所以我在网上搜索并在stackoverflow上找到了这个主题: Linker error "contains invalid OMF record"

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

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

1 个答案:

答案 0 :(得分:2)

一点背景:

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

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

您有多种选择。

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