비주얼 스튜디오 - Linux C/C++ 프로젝트에서 openssl 링크하는 방법
기본 Linux Console 프로젝트를 만들고, 다음과 같이 간단한 코드를 작성 후,
#include <cstdio>
#include <openssl/ssl.h>
int main()
{
SSL* ssl = nullptr;
char* buf = nullptr;
int len = 0;
int readBytes = SSL_read(ssl, (char*)buf, len);
printf("%d", readBytes);
return 0;
}
Linker / "Command Line" / "Additional Options"에 "-lssl -lcrypto" 옵션을 추가해도,
빌드 시 이런 링커 오류가 발생합니다.
1>/usr/bin/ld : error : /home/testusr/projects/LinuxConsoleApp1/obj/x64/Debug/main.o: in function `main':
1>C:\test\LinuxConsoleApp1\LinuxConsoleApp1\main.cpp(11): error : undefined reference to `SSL_read'
1>collect2 : error : ld returned 1 exit status
반면, 해당 WSL 인스턴스를 띄우고 직접 입력하면,
$ g++ main.cpp -lcrypto -lssl
빌드가 잘 됩니다. 이상하군요. ^^; 그나저나,
이전에 기록했었지만 자꾸만 까먹고 있습니다. ^^;
비주얼 스튜디오 프로젝트에서 링킹을 위한 라이브러리는 "Additional Options"에 지정하면 안 되고, 다음과 같이 Linker / Input / "Library Dependencies"에 지정해야 합니다.
잊지 않기 위해 다시 한번 기록을 남겨 둡니다. ^^;
참고로,
"-pthread" 옵션은 Linker / "Command Line" / "Additional Options"에 설정합니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]