기본 블록 체인 시뮬레이션을 만들기 위해 OpenSSL의 EC 암호화 및 ECDSA 기능을 활용하려고하지만 주요로드 블록을 실행했습니다. Code :: Blocks IDE를 사용하고 있으며 여기에있는 64 비트 바이너리를 사용하여 OpenSSL을 설치했습니다 : https://slproweb.com/products/Win32OpenSSL.html. 링커 설정에서 코드의 MinGW : 정적 OpenSSL 라이브러리를 연결하지 않는 블록
, 나는 검색 디렉토리> 컴파일러에서openssl.lib \ lib에는 OpenSSL을-Win64를 \을 추가, 내가 OpenSSL을-Win64를 \는 검색 디렉토리> 링커에서
을 포함 추가, 나는 [email protected]로 추가 Win32 \ lib그러나 컴파일 할 때 사용하려고하는 모든 OpenSSL 함수에 대해 "(함수 이름)에 대한 정의되지 않은 참조"오류가 발생합니다. 그러나 컴파일러는 EC_KEY와 같은 새로운 데이터 형식을 인식하므로 헤더 파일을 성공적으로 포함하고있는 것으로 보입니다. 링크 오류가 의심 스럽지만 위와 같이 연결된 링크와 정적 라이브러리가 있기 때문에 무엇이 잘못 될 수 있는지 잘 모르겠습니다. 내가 정적 라이브러리를 연결하는 새로운 해요 이후로 난 그냥 여기에 간단하게 뭔가를 누락 바라고 있어요
mingw32-g++.exe -LD:\OpenSSL-Win64\lib -LD:\OpenSSL-Win64\include -LD:\OpenSSL-Win64 -o bin\Debug\BlockchainSim.exe obj\Debug\main.o obj\Debug\src\Block.o obj\Debug\src\BlockchainNode.o obj\Debug\src\Transaction.o obj\Debug\src\Valuable.o D:\OpenSSL-Win64\lib\openssl.lib
obj\Debug\src\BlockchainNode.o: In function `ZN14BlockchainNodeC2Ei':
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:18: undefined reference to `EC_KEY_new_by_curve_name'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:21: undefined reference to `BN_new'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:22: undefined reference to `EC_KEY_set_private_key'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:25: undefined reference to `BN_CTX_new'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:26: undefined reference to `BN_CTX_start'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:28: undefined reference to `EC_KEY_get0_group'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:29: undefined reference to `EC_POINT_new'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:30: undefined reference to `EC_POINT_mul'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:31: undefined reference to `EC_KEY_set_public_key'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:34: undefined reference to `EC_POINT_free'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:35: undefined reference to `BN_CTX_end'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:36: undefined reference to `BN_CTX_free'
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:37: undefined reference to `BN_clear_free'
obj\Debug\src\BlockchainNode.o: In function `ZN14BlockchainNodeD2Ev':
F:/School/Barrett/BlockchainSim/src/BlockchainNode.cpp:42: undefined reference to `EC_KEY_free'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
15 error(s), 0 warning(s) (0 minute(s), 0 second(s))
:
여기 내 빌드 로그입니다. 비슷한 문제는 명령을 컴파일하는 옵션을 추가하여 해결할 수 있지만 Code :: Blocks를 사용하고 OpenSSL을 정적 라이브러리로 연결하기 때문에 여기에 적용되는지 확실하지 않습니다. 어떤 도움이라도 대단히 감사합니다.
동일한 컴파일러와 플래그를 사용하여 openssl.lib 등을 컴파일 했습니까? –
아니요.하지만 사용 된 이진 파일의 특성으로 인해 필요하지 않았습니다. 기본적으로 OpenSSL을 설치하고 컴파일합니다. –