199次浏览

C/C++调用openssl 编译后的程序在XP系统下找不到bcrypt.dll

估计是编译openssl时没有指定 -D_WIN32_WINNT=0x0501 选项导致xp无法支持

解决方法

重新编译openssl库并指定 -D_WIN32_WINNT=0x0501 选项即可。

编译方法

  • 下载安装ActivePerl,nasm汇编器,openssl库,配置好环软件境变量。
  • 打开Visual Studio命令工具, cd到下载好的openssl库目录。
  • 执行 perl Configure VC-WIN32 no-shared no-asm no-tests –debug -D_WIN32_WINNT=0x0501 –prefix=C:\OpenSSL
  • 等待配置完成后执行 nmake开始构建, 构建完毕后再执行 nmake install ,执行完毕后编译好的库就放在了C:\OpenSSL。

参数解释

VC-WIN32:可根据需要修改为64位等。

no-shared 表示编译静态库,去掉此选项就是动态库了。

no-asm 不使用汇编器。

no-tests为不需要tests功能,不增加测试库是否正常功能。

–debug 表示调试版,改为release表示编译发布版。

-D_WIN32_WINNT=0x0501 支持winxp

–prefix=C:\OpenSSL 编译输出目录

需要注意:再次编译前应先执行 nmake clean 清理上次编译。

发表评论

电子邮件地址不会被公开。 必填项已用*标注