Turbo C++ 工具在编译和链接代码时会生成“DPMI 服务器中没有 DOS 扩展”

Turbo C++ tools produce "No DOS extensions in the DPMI server" when compiling and linking code

提问人:Kien Nguyen 提问时间:9/28/2023 最后编辑:Michael PetchKien Nguyen 更新时间:9/29/2023 访问量:191

问:

我正在尝试链接 .cpp 文件和 .asm 文件,这是我的代码:

阶乘1.cpp

#include<iostream.h>;
#include<conio.h>;

int n;

extern int factorial();
void main(){
    char tl;    
    L1: 
        clrscr();
        cout<<"\n n: "; cin>>n;
        cout<<"\n n factorial: "<<n<<" is: "<<factorial();
        cout<<"\n continue (y/n)?";
        tl=getch();
        if(tl=='y') goto L1;

}

factorial2.asm

.MODEL large
.DATA 
    EXTRN _n:word
.CODE
    PUBLIC @factorial$qv
    @factorial$qv PROC
        mov cx,_n
        mov ax,1
        cmp cx,2
        jb L3

    L2: mul cx
        loop L2   
    L3: ret     
    @factorial$qv ENDP
END

然后,我使用以下命令来编译代码:\Compiler\BIN\TCC -ml -I\Compiler\INCLUDE -L\Compiler\LIB factorial1.cpp factorial2.asm

我得到了 .obj 文件,但 dosbox 显示错误:

DPMI 服务器中没有 DOS 扩展

如何修复该错误?

编辑:我的全部输出:My full output

我正在使用 tcc 3.0、tasm 版本 4.1 和 tlink 版本 7.0

编辑 2我尝试了 TLINK 3.01 和 5.0,现在我得到了这个enter image description here

编辑 3我更改为 cpp 文件和 asm 文件。我现在编译它没有错误。但是当我使用 TLINK 链接 2 obj 文件时,我收到此错误:extern int factorial();extern "C" int factorial();@factorial$qv_factorialenter image description here

C 程序集 TASM DOSBox Turbo-C++

评论


答: 暂无答案