在c ++应用程序中包含第三方python模块

时间:2014-08-07 21:03:12

标签: python c++ python-2.7 numpy module

我正在尝试构建一个用c ++解析netCDF4文件的应用程序。

我做了什么:

  • 成功解析python脚本中的文件。

我需要帮助:

  • 将我的python脚本包含为模块。当我运行我的C ++程序时,它抱怨它无法访问numPy。

我所知道的:

  • 我通过复制我的c ++可执行文件所在的netCDF4.pyd文件修复了netCDF4的相同问题,但找不到numPy。等效。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

欢迎来到社区!我希望我能正确理解这个问题 - 它是否将python模块导入c ++?如果是这样,请尝试以下教程:Embedding Python in C/C++: Part I

基本上,为了解释,不要使用代码转换或翻译 - 这是不必要的复杂。只需使python代码与C代码通信如下。感谢上面的网站上的代码,我的评论。

#include <Python.h> //get the scripts to interact

int main(int argc, char *argv[])
 {
PyObject *pName, *pModule, *pDict, *pFunc, *pValue; //Arguments that are required.

if (argc < 3) 
{
    printf("Usage: exe_name python_source function_name\n");
    return 1;
}

// Allow your program to understand python
Py_Initialize();

// Initialize Name
pName = PyString_FromString(argv[1]);

// Import the module from python
pModule = PyImport_Import(pName);

// pDict is a borrowed reference 
pDict = PyModule_GetDict(pModule);

// same situiation as above 
pFunc = PyDict_GetItemString(pDict, argv[2]);

if (PyCallable_Check(pFunc)) 
{
    PyObject_CallObject(pFunc, NULL);
} else 
{
    PyErr_Print();
}

// Tidy Everything Up.
Py_DECREF(pModule);
Py_DECREF(pName);

// End interpreter
Py_Finalize();

return 0;
}

我建议你阅读上面的教程。

希望这有帮助!