-
環境:Windows10
-
工具:vs2015 + cmake3.1
-
依賴:openssl-1.1.0
-
Demo: openssl aes api 記錄 [一]
問題1(x509與Windows衝突)
-
現象描述:
圖一:
這是報錯的地方,該文件爲 openssl/x509.h圖二:
F12可以看到, X509_NAME 指向了windows的頭文件定義。 -
解決方法:
在CMakeLists.txt中添加宏 NOCRYPT,如下(看到網上有人說在wincrypt.h 中可以找到有關該宏的解釋,我沒有找到):cmake_minimum_required(VERSION 2.8) project(encrypt) FILE(GLOB_RECURSE SRCS ./src/*.cpp) add_executable(crypt ${SRCS}) if (WIN32) include_directories( ${PROJECT_SOURCE_DIR}/include ) endif (WIN32) target_link_libraries(model_crypt ${PROJECT_SOURCE_DIR}/lib/libcrypto.lib ) add_definitions(-DNOCRYPT -D_CRT_SECURE_NO_WARNINGS)
問題二(EVP_CIPHER_CTX 不允許使用不完整的類型)
- 現象描述:
F12發現沒有找到 EVP_CIPHER_CTX 的定義。 - 解決方法:
下載 openssl 源碼,源碼中找到 evp_locl.h,放入你的工程中。 evp_locl.h 中提供了 EVP_CIPHER_CTX 的定義。