• 如果在执行程序中直接使用本程序导出的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();


  • 相关阅读:
    驱动表
    将索引移动到别的表空间
    log file sync, log file parallell write
    Full Hint
    4wpa_supplicant适配层 详解
    wifi 驱动 进阶11
    wifi 驱动 进阶11
    基于linux2.6.38.8内核的SDIO/wifi驱动分析
    6wpa_supplicant无线网络配置
    2系统启动后的 wifi加载 过程图解
  • 原文地址:https://www.cnblogs.com/ygxsk/p/7694005.html
Copyright © 2020-2023  润新知