Language/C++

[C++] Python 연동 with VS code

nowkoes 2023. 7. 18. 15:51

C++ Python 연동

개요

 간단한 토이 프로젝트를 작업하던 도중, 클립보드를 캡처하는 기능이 필요해졌다. C++로 이를 구현하려고 하니, 윈도 API를 이용하면 가능하다는 걸 알았다. 하지만 이 방법에는 다른 OS와의 호환성이 떨어질 수도 있다는 문제점이 있다. 이에 대한 방안을 찾던 중, 파이썬에서는 이를 쉽게 구현할 수 있다는 걸 알게 되었다. 

 

 이번 시간에는 파이썬에서 작성한 코드를 C++에서 호출하는 기능을 알아보도록 하겠다. Python 3.11.4 버전을 쓰고 있으며, visual studio는 2022 버전을 사용하고 있다. 또한, 이를 통해 C++과 파이썬 사이의 간접적인 연동 방법을 알아보겠다. 이런 방법은 프로그래밍 언어 간의 장벽을 넘어, 더 효과적이고 확장 가능한 솔루션을 만들 수 있도록 해준다.


본문

 먼저 내가 작성한 grab_clipboard.py 파이썬 코드를 보자.

 

 

 클립보드에 이미지를 저장하고 1을 터미널에 입력하면, 캡쳐본을 example.png라는 이름으로 같은 디렉터리에 저장하게 설정하였다. 

 

출처: cppreference

 

 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;
    }
}

 

반응형