C/C++与Python互相调用

VS2013配置Python

属性-->VC++ 目录 --> 库目录 --> E:\python3.6\libs

属性-->C/C++ --> 附加包含目录 -->  E:\python3.6;E:\python3.6\include

 

错误    1    error LNK1104: 无法打开文件“python36_d.lib” 

E:\python3.6\libs中复制 python36.lib重命名为python36_d.lib

 

解决:程序无法启动.计算机丢失python36.dll,请重新安装程序后重试

1.下载python36.dll,网址:https://www.python.org/;或者在python安装目录下找到python36.dll,我的路径是:E:\python3.6
2.将python36.dll放入目录C:\Windows\System32文件夹中即可

问题C/C++与Python互相调用_第1张图片

解决:运行平台改为x64

配置成功

 

 

C++调用python

例程1

运行https://blog.csdn.net/heqiangflytosky/article/details/8875630?tdsourcetag=s_pctim_aiomsg 的test.c出错

修改print为Python3的版本

1、    PyRun_SimpleString("print('hi,python!')");

2、    pFunc = PyObject_GetAttrString(pModule, "HelloWorld");

0x000000001DED5172 (python36.dll) (ConsoleApplication1.exe 中)处有未经处理的异常:  0xC0000005:  读取位置 0x0000000000000008 时发生访问冲突。

将mypy.py放入D:\cpp\cToPython\ConsoleApplication1\x64\Debug 文件夹中

 

运行成功

C/C++与Python互相调用_第2张图片

 

例程2

1、test001.cpp发生错误

C/C++与Python互相调用_第3张图片

将Test001.py的print格式改为python3的格式,HelloWorld() ,Add(),TestTransferDict()测试成功

C/C++与Python互相调用_第4张图片

2、测试TestClass()函数

PyObject *pInstancePerson = PyInstance_New(pClassPerson, NULL, NULL);

错误    2    error C3861: “PyInstance_New”:  找不到标识符   

因为我用的python3,这个标识符好像是2的

可以改为     PyObject *pInstancePerson = PyInstanceMethod_New(pClassPerson);

但是好像不能输出啊?

 

跑这个可以 https://www.cnblogs.com/xuyuan77/p/8419442.html

C/C++与Python互相调用_第5张图片

 

 

 

python调用C++

https://www.cnblogs.com/xuyuan77/p/8419442.html

C/C++与Python互相调用_第6张图片

 

1、

https://blog.csdn.net/heqiangflytosky/article/details/8875630?tdsourcetag=s_pctim_aiomsg

C/C++与Python互相调用_第7张图片

2、

C/C++与Python互相调用_第8张图片

C/C++与Python互相调用_第9张图片

 

 

 

参考:

https://blog.csdn.net/heqiangflytosky/article/details/8875630?tdsourcetag=s_pctim_aiomsg

http://www.cppblog.com/jacky2019/archive/2007/05/17/24269.html?opt=admin

c++访问python3-实例化类的方法 https://blog.csdn.net/love_clc/article/details/76653100

https://www.cnblogs.com/xuyuan77/p/8419442.html

你可能感兴趣的:(C++)