VS Code实现在C++程序里面调用python代码

VS Code实现在C++程序里面调用python代码

小白第一次尝试终于用了一天的时间解决了,喜极而泣!
记录下来,希望能够帮助需要的人。

1、创建一个文件夹,在文件夹里面新建两个文件
一个是C++文件test.cpp,一个是python 文件forcpp.py。

test.cpp

#include 
int main(int argc, char *argv[]) {
    Py_Initialize(); 
   
    //判断初始化是否成功
    if(!Py_IsInitialized())
    {
        printf("Python init failed!\n");
        return -1;
    }
    PyRun_SimpleString("import sys");
    // PyRun_SimpleString("sys.path.append('./')");//若python文件在c++工程下
    // 添加python文件所在的位置
    PyRun_SimpleString("sys.path.append('/home/user/Documents/project/helloword')");
    PyObject* pModule = NULL;
    PyObject* pFunc = NULL;

	//导入python文件
    pModule = PyImport_ImportModule("forcpp");
    if (!pModule) {
        printf("Can not open python file!\n");
        return -1;
    }

    pFunc = PyObject_GetAttrString(pModule, "printHello");
    //PyEval_Ca llObject(pFunc, NULL);
    PyObject_CallObject(pFunc, NULL);

    Py_DECREF(pFunc);
    Py_DECREF(pModule);
    Py_Finalize();
    return 0;
}

forcpp.py

import sys

def printHello():
    print(sys.version)
    print("hello world!")

(以上两个例程是在网上找的测试程序,如有侵权请告知。)

2、将程序编译成.exe文件,然后进行debug。这里面编译有两种方式,
一种是用CMakeLists.txt 文件编译;
另一种是 选择 终端->配置任务,选择g++生成活动文件,会生成tasks.json 文件,在tasks.json 文件里面定义编译任务,在.cpp文件中按键ctrl+shift+b,如果配置正确的话会看到生成的可执行文件。具体配置在下一篇再介绍,这里面先介绍第一种方法。

3、建立CMakeLists.txt 文件,内容

cmake_minimum_required(VERSION 2.8)
project(helloword) #工程文件名
include_directories(
    /home/user/anaconda3/include/python3.7m
)                       #是包含Python.h的文件夹路径,否则报错找不到Python.h
#设置debug 模式,否则不能debug
set (CMAKE_BUILD_TYPE DEBUG)

add_executable(test
    test.cpp)           #生成可执行文件test.exe
target_link_libraries(test
    /home/user/anaconda3/lib/libpython3.7m.so     
)                      #链接需要的Python库

4、将以上文件都保存好,在工程文件夹终端执行

mkdir build
cd build
cmake ..
make

在build文件夹中会生成test.exe文件

5、debug C++文件需要设置launch.json文件。
在菜单栏选择 运行->添加配置,选择C++(GDB/LLDB),就会自动生成launch.json文件
我们需要改一下默认配置

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/test",  #这里面改成刚才生成test.exe文件目录,最前面的意思是工作空间文件夹
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",               #这里面改成工作空间文件夹
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
         
        }
    ]
}

保存之后,可以在.cpp文件中,按左侧调试按钮启动调试,如图所示就大功告成了!
VS Code实现在C++程序里面调用python代码_第1张图片

你可能感兴趣的:(C++,c++,python,vscode)