VC++调用Python——准备环境与简单调用函数
最近正在研究C++与Python的调用,整理成文章供大家参考。不用问,可随意转载。
〇、需要下载的东西
Anaconda https://www.anaconda.com/
Visual Studio 2022 Community Edition https://visualstudio.microsoft.com/vs/community/
一、Anaconda 部分
首先,在管理员模式下打开 anaconda prompt

然后输入以下指令创建一个虚拟环境(python 版本为 3.9)
然后输入以下指令激活虚拟环境,并且查看 python 的文件路径
然后记录下 python 的所在路径

如果忘记了虚拟环境的名字,输入如下命令
可以查看当前电脑里面安装的所有虚拟环境
二、Visual Studio 部分
打开 Visual Studio Installer,然后安装 VC++ (使用C++的桌面开发)

语言包里面建议装一个英文的,这样遇到各种问题可以查 stackoverflow :D
安装结束后,创建一个C++的桌面项目(Console App)

项目名称叫做 cppwithpython
进入主界面以后,找到右侧的 Solution Explorer,右击 cppwithpython


点击菜单中的 Properties,打开属性界面,首先确保 Configuration 的选项列表中选择了 All Configurations
其次,找到 Configuration Properties >> C/C++ >> General >> Additional Include Directories

然后选择 python 所在位置的 include 文件夹(Python 的所在位置在上一步里面可以得到)

然后,找到 Configuration Properties >> Linker >> Additional Library Directories

然后选择 python 所在位置的 libs 文件夹(注意是 libs 不是lib)

至此,在 cppwithpython.cpp 里面,你可以导入 python 的 header
随后,在 Solution Explorer 中右击 Resources Files,然后选择 Add >> Existing Item

选择 python3.dll, python39.dll, 以及 zlib.dll

随后选择这三个文件的 Properties

然后在 Item Type 中选择 Copy File

随后,在 cppwithpython.cpp (或任意一个cpp 源文件)中,输入
Initialize 为初始化,Finalize 为结束。Initialize 之前,可以运行一些配置类的代码,但大部分调用 python 的代码都应该放在 Initialize 和 Finalize 之间。
然后,上面的菜单里,选择 Release x64,点击 Local Windows Debugger 即可运行程序


至此,C++ 成功地调用了 python 并运行了一个会报错的程序.
三、配置文件
上面的代码运行后将会返回一个奇怪的错误,因为我们没有把 python 的库导进去,所以我们利用如下代码,设置 python 的 module path
首先,代码会创建一个 config 配置文件,然后我们在配置文件中的 module search paths 里面追加 Lib(注意不是libs)所在的路径(注意路径里面双斜线)
然后我们利用这个配置文件初始化 python
加入这个代码后,会发现,上述的错误消失了

四、运行 Python 文件
这里我在D盘创建了一个 demo.py,里面只写了一句 print("Hello World"),利用如下代码可以运行这个文件

五、调用 Python 函数
依旧是上面那个 demo.py, 但是里面改成了一个 python 函数,如下
如果要调用这个函数,首先,需要设置 module paths
由于这个 demo.py 的完整路径是 D:\\demo.py,所以这里路径是目文件夹的路径 D:\\
随后,利用如下代码 import 这个 demo.py 及其下面的 PrintHelloWorld 函数
最后利用
来触发这个函数
完整代码如下

目前就先整理这些东西