【问题标题】:bcc32 + nasm obj linking error (Fatal: 'fir.asm': Additional segments need to be defined in a .def file)bcc32 + nasm obj 链接错误(致命:'fir.asm':需要在 .def 文件中定义其他段)
【发布时间】:2011-11-03 20:40:31
【问题描述】:

这让我头疼,让我感觉很糟糕

我正在尝试将独立程序集与旧的 bo​​rland c++ 5.5 (bcc32) 一起使用

我选择了 nasm 汇编器并在 asm 中编写了一些例程 - 将其组装到 obj 中, 它链接正常并且工作正常;

它有效,但我只使用了 asm.obj 中的 .text 部分, 当我尝试使用 .data 部分时,尝试链接它时出现错误:

    Fatal: 'fir.asm': Additional segments need to be defined in a .def file

找不到解决办法。据我所知,DEF 可能仅用于 dll 我不使用 dll 的唯一静态 obj 链接,所以我不知道它是否是 borland 链接器 问题,我应该尝试认真写一些def文件(我不知道如何)或 这是 nasm 问题,我可能应该在汇编程序中切换一些东西,然后 它将链接:-/

【问题讨论】:

  • 为什么是 nasm? nasm 甚至会产生 Borland OMF 对象吗?我原以为你需要 basm。
  • 是的,nasm 使用选项 -f obj 生成 OMF 对象
  • borland tasm 很旧,不支持 sse/avx,我需要主要用于手写 sse 例程的程序集

标签: c++ winapi assembly nasm


【解决方案1】:

由于 NASM 可以生成 OMF 对象(32 位和 16 位),我建议使用它。我假设你不会用汇编语言编写整个应用程序,所以在用 nasm 组装你的 asm 规则之后,制作一个 C 包装器并使用 Borland 链接器。 (这只是我的建议)

【讨论】:

  • 什么包装?正如我所说,我使用 nasm 生成 32 位 omf,并将其与编译器“bcc32 main.c asm.obj”链接,如果我不在程序集中使用数据部分,它可以正常工作 - 如果是这样,我得到了上面提到的严重错误跨度>
猜你喜欢
  • 1970-01-01
  • 2016-03-09
  • 2017-02-17
  • 2013-10-09
  • 1970-01-01
  • 2014-01-15
  • 2013-05-07
  • 2017-05-26
  • 1970-01-01
相关资源
最近更新 更多