Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)

비주얼 스튜디오 - 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" 옵션을 추가해도,

openssl_link_1.png

빌드 시 이런 링커 오류가 발생합니다.

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"에 지정해야 합니다.

openssl_link_2.png

잊지 않기 위해 다시 한번 기록을 남겨 둡니다. ^^;




참고로, "-pthread" 옵션은 Linker / "Command Line" / "Additional Options"에 설정합니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 3/29/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 31  32  33  34  35  36  37  38  39  [40]  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
13000정성태3/12/202217566.NET Framework: 1176. C# - Oracle.ManagedDataAccess.Core의 성능 카운터 설정 방법
12999정성태3/10/202217967.NET Framework: 1175. Visual Studio - 프로젝트 또는 솔루션의 Clean 작업 시 응용 프로그램에서 생성한 파일을 함께 삭제파일 다운로드1
12998정성태3/10/202214459.NET Framework: 1174. C# - ELEMENT_TYPE_FNPTR 유형의 사용 예
12997정성태3/10/202225604오류 유형: 799. Oracle.ManagedDataAccess - "ORA-01882: timezone region not found" 오류가 발생하는 이유
12996정성태3/9/202226848VS.NET IDE: 175. Visual Studio - 인텔리센스에서 오버로드 메서드를 키보드로 선택하는 방법
12995정성태3/8/202217706.NET Framework: 1173. .NET에서 Producer/Consumer를 구현한 BlockingCollection<T>
12994정성태3/8/202217160오류 유형: 798. WinDbg - Failed to load data access module, 0x80004002
12993정성태3/4/202217350.NET Framework: 1172. .NET에서 Producer/Consumer를 구현하는 기초 인터페이스 - IProducerConsumerCollection<T>
12992정성태3/3/202221026.NET Framework: 1171. C# - BouncyCastle을 사용한 암호화/복호화 예제파일 다운로드1
12991정성태3/2/202218482.NET Framework: 1170. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 transcode_aac.c 예제 포팅
12990정성태3/2/202218995오류 유형: 797. msbuild - The BaseOutputPath/OutputPath property is not set for project '[...].vcxproj'
12989정성태3/2/202215844오류 유형: 796. mstest.exe - System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.QualityTools.Tips.WebLoadTest.Tip
12988정성태3/2/202213468오류 유형: 795. CI 환경에서 Docker build 시 csproj의 Link 파일에 대한 빌드 오류
12987정성태3/1/202215982.NET Framework: 1169. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 demuxing_decoding.c 예제 포팅
12986정성태2/28/202219325.NET Framework: 1168. C# -IIncrementalGenerator를 적용한 Version 2 Source Generator 실습 [1]
12985정성태2/28/202218065.NET Framework: 1167. C# -Version 1 Source Generator 실습 [1]
12984정성태2/24/202217782.NET Framework: 1166. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 filtering_video.c 예제 포팅
12983정성태2/24/202217690.NET Framework: 1165. .NET Core/5+ 빌드 시 runtimeconfig.json에 설정을 반영하는 방법
12982정성태2/24/202217592.NET Framework: 1164. HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
12981정성태2/23/202215338VC++: 154. C/C++ 언어의 문자열 Literal에 인덱스 적용하는 구문 [1]
12980정성태2/23/202217279.NET Framework: 1163. C# - 윈도우 환경에서 usleep을 호출하는 방법 [2]
12979정성태2/22/202224968.NET Framework: 1162. C# - 인텔 CPU의 P-Core와 E-Core를 구분하는 방법 [1]파일 다운로드2
12978정성태2/21/202219026.NET Framework: 1161. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 resampling_audio.c 예제 포팅
12977정성태2/21/202222783.NET Framework: 1160. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 qsv 디코딩
12976정성태2/21/202217150VS.NET IDE: 174. Visual C++ - "External Dependencies" 노드 비활성화하는 방법
12975정성태2/20/202218577.NET Framework: 1159. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 qsvdec.c 예제 포팅파일 다운로드1
... 31  32  33  34  35  36  37  38  39  [40]  41  42  43  44  45  ...