c++ 如何调用 python 脚本

环境  vs2102  V11

python 36

代码来源 :   https://www.geeksforgeeks.org/calling-python-from-c-set-1/

例子调用了 math module 的 pow 函数  ,如果想调用自编的 module ‘s function , 见 : http://www.notesoflyang.com/?p=2112   

  • 遇到的问题

a) compile 时找不到 <inttypes.h> , 原因是 : visual studio 不支持 c-99  , 解决方法是自己下载放到 vs 的 include 目录去

https://stackoverflow.com/questions/13266868/ffmpeg-inttypes-h-not-found-error

b) 编译时出现

原因是 :  32位的程序链接的64位 python的lib ,

解决方法: 再装一个32位的python , 本例中,装的是  python 37 — 32位

https://stackoverflow.com/questions/15029519/error-lnk2001-unresolved-external-symbol-imp-py-initmodule4

https://stackoverflow.com/questions/16094343/how-to-embed-python-2-4-in-c-application-using-vs-c-6-0


c)  编译时提示 cannot open file ‘python37_d.lib’

原因是 : 应用程序的配置是 : debug win32  , 所以编译器尝试找 python37_d.lib

解决方法 : 在 include puthon.h 文件时, 这样写 , 绕过编译器自动选择

 

  • 传2个double 参数给 python 某模块函数的写法是

 

  • 如果想传 double数组

 

 

  • 参考文档

https://stackoverflow.com/questions/3286448/calling-a-python-method-from-c-c-and-extracting-its-return-value

调用 python 脚本并取返回值


https://www.geeksforgeeks.org/calling-python-from-c-set-1/

这个教程比较好

 


很详细的教程  , python36 +  visual studio

http://justinwatson.name/2017/03/21/Embedding_Python_in_C++.html