不安装Python的情况下用C++调用Python

12 篇文章 2 订阅

想在不安装python的情况下调用它,网上说的方法都不太详细,就连官方给的chm文件也没提及怎么配置,摸索了下,找到了简单调用的办法。记录下。

0.编译条件

MSVS 2010 C++ console程序
Python 2.7

1.需要的文件及文件夹

include文件夹
libs文件夹
Lib文件夹
Python27.dll文件

上面前3个文件夹可以从其他安装好Python的根目录里取得,dll文件从system文件夹里考出来。这里打包提供下本站下载

2.VC工程配置


  1. 新建控制台项目PyTest,解压缩上面的文件夹放在.h.cpp目录处;
  2. 由于没有Debug下的dll,这里只能配置release的工程;

工程-属性-VC++ Directories-Include Directories添加$(ProjectDir)python27\include
工程-属性-VC++ Directories-Library Directories添加$(ProjectDir)python27\libs
释放Python27.dll到Release目录

3. 添加代码

// PyTest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <direct.h>
#include <windows.h>  
#include <string.h>
#include "python.h"

using namespace std;

int _tmain(int argc, char* argv[])
{
    char   buffer[MAX_PATH];   
    _getcwd(buffer, MAX_PATH); 
    cout<<buffer<<endl;
    strncat_s(buffer,"\\Python27",9);//Python模块路径
    Py_SetPythonHome(buffer);
    Py_SetProgramName(argv[0]);  /* optional but recommended */ 

    Py_Initialize();

    PyRun_SimpleString("from time import time,ctime\n"
        "print 'Today is',ctime(time())\n");
    Py_Finalize();

    system("pause");


    return 0;
}

4.编译连接运行得到结果

显示当前日期时间

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例代码,演示如何在Windows系统上实现Python调用C++,以及C++调用PythonPython调用C++的示例代码: ```python # test.py import ctypes # 加载C++编译的DLL mydll = ctypes.cdll.LoadLibrary("mydll.dll") # 调用C++函数 result = mydll.add(1, 2) print(result) ``` C++编写的DLL示例代码: ```cpp // mydll.cpp #include <iostream> // 导出函数 extern "C" __declspec(dllexport) int add(int a, int b) { std::cout << "C++ function called." << std::endl; return a + b; } ``` 使用Visual Studio编译上面的C++代码,生成DLL文件mydll.dll。 C++调用Python的示例代码: ```cpp // test.cpp #include <Python.h> int main() { Py_Initialize(); // 导入Python模块 PyObject* pModule = PyImport_ImportModule("test"); if (!pModule) { std::cout << "Failed to import module." << std::endl; return 0; } // 导入Python函数 PyObject* pFunc = PyObject_GetAttrString(pModule, "add"); if (!pFunc || !PyCallable_Check(pFunc)) { std::cout << "Failed to import function." << std::endl; return 0; } // 调用Python函数 PyObject* pArgs = PyTuple_New(2); PyTuple_SetItem(pArgs, 0, PyLong_FromLong(1)); PyTuple_SetItem(pArgs, 1, PyLong_FromLong(2)); PyObject* pResult = PyObject_CallObject(pFunc, pArgs); // 获取Python函数返回值 int result = PyLong_AsLong(pResult); std::cout << "Python function called. Result: " << result << std::endl; Py_Finalize(); return 0; } ``` Python代码示例: ```python # test.py def add(a, b): print("Python function called.") return a + b ``` 使用Visual Studio编译上面的C++代码,生成可执行文件test.exe。运行test.exe,即可看到Python函数被调用的结果。 需要注意的是,Python版本和C++编译器版本需要匹配,否则可能会出现兼容性问题。此外,在实际开发中,需要考虑更多的安全和稳定性问题,例如参数类型检查、异常处理等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值