在构buildOpenSSL x64静态库时,出现“错误A2009:expression式中的语法错误”错误

我需要Openssl的静态库。 我按照这里的指示。 我做的步骤如下:

  1. 运行“Visual Studio 2008 x64交叉工具命令提示符”。
  2. 执行perlconfigurationVC-WIN64A不共享no-idea
  3. 执行ms \ do_win64a
  4. 编辑ms \ nt.mak并在输出目录中将 “32”更改为“64”。
  5. 执行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的。

我也遇到了这个问题,发现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与命令行参数不兼容。 人们说我必须在我的环境中添加asm变量。 所以我在crypto \ perlasm \ x86_64-xlate.pl文件中做了全局更改:“PTR} [”到“PTR} [”。 只是在变量之后添加了空格。