zoukankan      html  css  js  c++  java
  • 如果在执行程序中直接使用本程序导出的python模块,可无需导出成pyd库

        如果在执行程序中直接使用本程序导出的python模块,可无需导出成pyd库。

        例如,有程序A,其python扩展模块名称为ExtA,在A程序中调用ExtA模块的初始化函数initExtA()后,可直接可在程序中使用ExtA模块的方法。如下代码:

    #include <Python.h>
    
    #include <boost/python.hpp>
    using namespace boost::python;
    
    void testPy()
    {
        printf("hello world
    ");
    }
    
    //生成导出模块
    BOOST_PYTHON_MODULE(ExtA)
    {
        def("testPy", testPy);
    } 
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    
        Py_Initialize ();
        initExtA();
        PyRun_SimpleString("import ExtA");//使用ExtA模块
        PyRun_SimpleString("ExtA.testPy()");
        Py_Finalize ();
        system("pause");
        return 0;
    }

         这种方式的优点在于,省去了额外的动态连接库导出工程。如果不想让自己的程序附带太多的动态连接库,这叶将是一种很方便的方法。

         有时候需要用到函数声明,方便在其他程序模块中使用,这就需要将void initXXX()声明放到头文件中去。注意,boost::python库中initXXX函数的原型为:extern "C" __declspec(dllexport) void initXXX();


  • 相关阅读:
    jQury+Ajax与C#后台交换数据
    loadrunner 测试问题汇总
    Loadrunner脚本学习总结
    sar命令详解
    用sar进行CPU利用率的分析
    centos7-sar工具的安装过程及其简单应用
    shell if [ -d filename]
    shell脚本自带变量的含义
    Sublime Text2使用规则
    selenium grid结构图
  • 原文地址:https://www.cnblogs.com/ygxsk/p/7694005.html
Copyright © 2011-2022 走看看