Visual studio 2015 MASM编译器错误:初始值设定项大小对于指定大小太大

Visual studio 2015 MASM编译器错误:初始值设定项大小对于指定大小太大,visual-studio-2015,imagemagick,jpeg,x86-64,masm,Visual Studio 2015,Imagemagick,Jpeg,X86 64,Masm,我试图构建一个64位静态C库,它与64位C运行库动态链接 C库在一个文件中包含一些无法生成的程序集。下面是代码: JMEMDOSA_TXT segment byte public 'CODE' assume cs:JMEMDOSA_TXT public _jdos_open public _jdos_close public _jdos_seek public _jdos_read ... 我得到的编译器错误是: A2071:初始值设定项幅值对于指定的大

我试图构建一个64位静态C库,它与64位C运行库动态链接

C库在一个文件中包含一些无法生成的程序集。下面是代码:

JMEMDOSA_TXT segment byte public 'CODE'
    assume cs:JMEMDOSA_TXT
    public _jdos_open
    public _jdos_close
    public _jdos_seek
    public _jdos_read
...
我得到的编译器错误是:

A2071:初始值设定项幅值对于指定的大小太大

以下是指向完整asm源文件的链接:
我找到了答案。根据Michael上面的评论,此汇编代码是16位的

要使用64位寄存器执行此操作,需要将其重写为使用64位寄存器

不可能将16位或32位程序集编译为64位二进制文件


但是,如果有C源代码执行相同的工作,则C代码可以编译到相应的程序集中,然后编译成32位或64位二进制。

链接的源代码不是64位Windows源代码,而是16位DOS源代码。我怀疑你能用它建立一个64位的库。谢谢Michael。我在研究64位寄存器时也发现了这一点,并决定现在使用C代码。你证实了我的想法。我以为它是32位的,但更糟糕的是它是16位的。这证明了C代码在近期内是向前发展的方向。我感谢你的帮助!