C++ Python 연동
개요
간단한 토이 프로젝트를 작업하던 도중, 클립보드를 캡처하는 기능이 필요해졌다. C++로 이를 구현하려고 하니, 윈도 API를 이용하면 가능하다는 걸 알았다. 하지만 이 방법에는 다른 OS와의 호환성이 떨어질 수도 있다는 문제점이 있다. 이에 대한 방안을 찾던 중, 파이썬에서는 이를 쉽게 구현할 수 있다는 걸 알게 되었다.
이번 시간에는 파이썬에서 작성한 코드를 C++에서 호출하는 기능을 알아보도록 하겠다. Python 3.11.4 버전을 쓰고 있으며, visual studio는 2022 버전을 사용하고 있다. 또한, 이를 통해 C++과 파이썬 사이의 간접적인 연동 방법을 알아보겠다. 이런 방법은 프로그래밍 언어 간의 장벽을 넘어, 더 효과적이고 확장 가능한 솔루션을 만들 수 있도록 해준다.
본문
먼저 내가 작성한 grab_clipboard.py 파이썬 코드를 보자.
클립보드에 이미지를 저장하고 1을 터미널에 입력하면, 캡쳐본을 example.png라는 이름으로 같은 디렉터리에 저장하게 설정하였다.
C++에서는 외부 명령을 실행시키는 std::system() 함수를 지원한다. 이 함수는 주어진 명령어를 문자열로 받아서, 운영체제의 커맨드라인에서 실행시킨다. 이때 이 함수는 운영체제의 기본 쉘을 사용하여 명령을 실행한다. 즉, 이 함수는 파이썬 스크립트를 실행하는 쉘 명령을 C++ 코드에서 직접 호출할 수 있게 해 준다. 그리고 명령어 실행의 결과를 int 값으로 반환하는데, 0은 명령어가 성공적으로 수행되었음을 의미한다.
이를 이용하여 C++에서 파이썬 코드를 호출하면 다음과 같다.
#include <string>
#include <cstdlib>
int main()
{
std::string pythonScript = "grab_clipboard.py";
std::string command = "python " + pythonScript;
int result = std::system(command.c_str());
if (result != 0)
{
std::cerr << "Python script execution failed with error code: " << result << std::endl;
return result;
}
}
'Language > C++' 카테고리의 다른 글
[C++] 배열 내의 원소 위치 찾기 with C++ (0) | 2023.08.07 |
---|---|
[C++] 정규 표현식 with C++ (0) | 2023.08.06 |
[C++] sort vs stable_sort with C++ (0) | 2023.08.05 |
[C++] 문자열 변환 - 대문자/소문자 변환 (0) | 2023.07.31 |
[C++] 진수 변환 (0) | 2023.07.06 |