如果在执行程序中直接使用本程序导出的python模块,可无需导出成pyd库
2012-08-20 15:48
513 查看
如果在执行程序中直接使用本程序导出的python模块,可无需导出成pyd库。
例如,有程序A,其python扩展模块名称为ExtA,在A程序中调用ExtA模块的初始化函数initExtA()后,可直接可在程序中使用ExtA模块的方法。如下代码:
这种方式的优点在于,省去了额外的动态连接库导出工程。如果不想让自己的程序附带太多的动态连接库,这叶将是一种很方便的方法。
有时候需要用到函数声明,方便在其他程序模块中使用,这就需要将void initXXX()声明放到头文件中去。注意,boost::python库中initXXX函数的原型为:extern "C" __declspec(dllexport) void initXXX();
例如,有程序A,其python扩展模块名称为ExtA,在A程序中调用ExtA模块的初始化函数initExtA()后,可直接可在程序中使用ExtA模块的方法。如下代码:
#include <Python.h> #include <boost/python.hpp> using namespace boost::python; void testPy() { printf("hello world\n"); } //生成导出模块 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();
相关文章推荐
- libevent for qt网络模块,直接替换qt的select模型,支持epoll,select,pool.使用非常简单,无需修改以前的代码结构
- Python中使用Tkinter模块创建GUI程序实例
- 使用 cx_freeze 把python程序编译成可执行文件
- python中的commands模块,执行出错:'{' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- 使用 PyInstaller 把python程序 .py转为 .exe 可执行程序
- python<win10下使用定时任务执行程序>
- 使用Perl或者Python加载Praat脚本在DOS命令窗口直接执行
- 检测Python程序执行效率及内存和CPU使用的7种方法
- [转]python执行bash指令,如果指令返回错误,如何优雅的结束python程序
- 把asp程序封装成可执行文件(无需IIS web服务器)直接运行的管理系统
- 使用优化器来提升Python程序的执行效率的教程
- Python进阶(一)——安装Python、程序执行、Python模块和IDLE调试
- 每天一个python小程序 2使用python.MySQLdb执行数据库操作
- Python学习之使用ctypes模块操作C扩展程序
- Windows 中使用py2exe将python程序打包成可执行程序
- Python程序中用csv模块来操作csv文件的基本使用教程
- mkdir是windows的一个命令,也就是在命令行可以直接运行的命令。如果你在命令行中可以直接执行"python" 那么就可以替换执行
- Python执行效率测试模块timei的使用方法与与常用Python用法的效率比较
- 提升python程序效率:使用局部变量替换模块变量
- Python进阶(一)——安装Python、程序执行、Python模块和IDLE调试