Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows “错误”;错误A2009:表达式中的语法错误;构建OpenSSL x64静态库时_Windows_Visual Studio_Openssl_64 Bit_Nmake - Fatal编程技术网

Windows “错误”;错误A2009:表达式中的语法错误;构建OpenSSL x64静态库时

Windows “错误”;错误A2009:表达式中的语法错误;构建OpenSSL x64静态库时,windows,visual-studio,openssl,64-bit,nmake,Windows,Visual Studio,Openssl,64 Bit,Nmake,我需要Openssl的静态库。我按照老师的指示去做。我采取的步骤如下: 运行“Visual Studio 2008 x64交叉工具命令提示符” 执行perl配置VC-WIN64A无共享无想法 执行ms\do\u win64a 编辑ms\nt.mak并将输出目录中的“32”更改为“64” 执行nmake-f ms\nt.mak 完成所有这些操作后,我在第5步得到一个错误: Assembling: tmp32\md5-x86_64.asm tmp32\md5-x86_64.asm(8) : erro

我需要Openssl的静态库。我按照老师的指示去做。我采取的步骤如下:

  • 运行“Visual Studio 2008 x64交叉工具命令提示符”
  • 执行perl配置VC-WIN64A无共享无想法
  • 执行ms\do\u win64a
  • 编辑ms\nt.mak并将输出目录中的“32”更改为“64”
  • 执行nmake-f ms\nt.mak
  • 完成所有这些操作后,我在第5步得到一个错误:

    Assembling: tmp32\md5-x86_64.asm
    tmp32\md5-x86_64.asm(8) : error A2009: syntax error in expression
    tmp32\md5-x86_64.asm(9) : error A2009: syntax error in expression
    tmp32\md5-x86_64.asm(677) : error A2009: syntax error in expression
    tmp32\md5-x86_64.asm(678) : error A2009: syntax error in expression
    NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 8\VC
    \BIN\x86_amd64\ml64.EXE"' : return code '0x1'
    Stop.
    

    这里出了什么问题?或者有人能给我提供一个指向Openssl静态库的链接,我可以在Visual Studio 20005中使用它吗?

    我找到了这个问题的答案。不知何故,
    nasm
    没有安装在我的机器上。这里显示的错误也没有说明任何关于nasm的问题。

    我找到了这个问题的答案。不知何故,
    nasm
    没有安装在我的机器上。这里显示的错误也没有说明任何关于nasm的问题。

    我也有这个问题,并且发现Perl太旧了。x86_64-xlate.pl中的以下行没有生成“PTR”,尽管设置了变量$PTR:

    $func .= "  mov QWORD${PTR}[8+rsp],rdi\t;WIN64 prologue\n";
    
    当我安装ActiveState Perl 5.16.3时,它工作得很好


    (我只安装了VisualStudio masm,我想使用nasm生成的代码可以工作,因为nasm似乎不需要PTR关键字)。

    我也遇到了这个问题,发现Perl太旧了。x86_64-xlate.pl中的以下行没有生成“PTR”,尽管设置了变量$PTR:

    $func .= "  mov QWORD${PTR}[8+rsp],rdi\t;WIN64 prologue\n";
    
    当我安装ActiveState Perl 5.16.3时,它工作得很好


    (我只安装了Visual Studio masm,我想使用nasm生成的代码可以工作,因为nasm似乎不需要PTR关键字)。

    似乎活动状态在我的环境中也很旧。我不确定是否使用了正确版本的nasm,但通过命令行参数,我的ml64.exe与nasm不兼容。人们说我必须将asm变量添加到我的环境中。 所以我在crypto\perlasm\x86_64-xlate.pl文件中做了一个全局更改: “PTR}[”到“PTR}[”。
    刚刚在变量后添加了一个空格。

    似乎活动状态在我的环境中也很旧。我不确定是否使用了正确版本的nasm,但我的ml64.exe在命令行参数方面与nasm不兼容。人们说我必须将asm变量添加到我的环境中。 所以我在crypto\perlasm\x86_64-xlate.pl文件中做了一个全局更改: “PTR}[”到“PTR}[”。
    只是在变量后添加了一个空格。

    向我们展示第8-9行将是一个良好的开端。向我们展示第8-9行将是一个良好的开端。这是对原始问题的回答吗?asm文件是由perl生成的。perl脚本中有一个错误。变量被视为数组,而不是变量。如果在文本变量中添加空格,它将被视为变量将生成正确的“mov QWORD PTR[8+rsp],rdi;WIN64序言”,而不是“mov QWORD[8+rsp],rdi;WIN64序言”(缺少PTR)问题中出现了错误A2009。这是对原始问题的回答吗?asm文件是由perl生成的。perl脚本中有一个错误。变量被视为数组而不是变量。如果在文本变量中添加空格,它将生成正确的“mov QWORD PTR[8+rsp],rdi;WIN64序言”而不是“mov QWORD”[8+rsp]、rdi;WIN64序言“(缺少PTR),问题中出现错误A2009。