其实这个问题,我之前解决过,我们针对的场景是如何在WINDOWS上进行这项工作,这项工作的一个附带的工作,如何引用BOOST.PYTHON库的文件。
这里我们有参考网站:
我们综合两篇文章,我们使用的命令是:
.\bjam.exe stage --toolset=msvc-14.0 --build-type=complete --with-python address-model=64 link=static runtime-link=shared threading=multi debug release
我们解释两个选项:--toolset=msvc-14.0表明使用vs2015的编译器编译,address-model=64表明编译成64位的
在实际的工作中,我们发现需要加宏代码才能正常的编译连接boost.python库
#define BOOST_PYTHON_STATIC_LIB
#include "boost\python.hpp"
宏的定义的目的是为了让boost.python模块知道连接的方式,我们针对之前的编译方式,这里必须采取的链接方式是BOOST_PYTHON_STATIC_LIB
我之所以编译这个库,主要原因是我的公司希望能够给python写个扩展的库,然后使用这个库给顾问组搭建相应的项目
这里需要提醒三点,第一必须严格执行上一部分的内容,才有可能成功,第二点,必须将编译好的文件放到python的安装目录下的DLLs文件夹下,注意所有相关的DLL都必须放到里面,才有可能成功,第三,模块名和pyd文件的名字必须保持一致。
如果想找一个什么例子,请参考Boost.Python - 1.63.0
最后,如果你能不使用boost库,请不要用它,你可以把它当做一个学习的资料,之所以建议你不用,是因为他的版本一直在更新(只能说明一点,这玩意不稳定),而且保不齐会出现向下不兼容的现象。
虽然,他的组织非常有威望(听说都是些C++标准委员会的成员),但是,他并不是一个十分权威的机构,能够引领潮流的机构,所以不要轻易使用这里面的东西。
吐槽一下,python是一门非常清晰简单的语言,或者不应该这样说,应该说python的语言设计是非常清晰简单的,之所以这样说的原因是python解释器的实现有多个版本,普遍采用的是基于C语言的版本。而我要吐槽的是,python的版本差异性。python的版本差异导致了一个非常严重的问题,就是版本迁移的问题,这个问题的本来就不应该是问题,但是对于python这朵奇葩,他就成了问题,这里我想说的第二点是,导致这个差异的本质原因是,python语言的设计初衷应该不是为了大型应用而产生的,我的逻辑是,如果你是为了大型应用,那么你应该注重你的版本的兼容性,而不应该产生这么多版本差异,现如今python语言还是在发展,你看到他的每个迭代版本还是有一定的差异,从这个意义上说,我并不推荐使用python去搭建一个应用程序框架,当然你做些小的项目还是可以的,毕竟,你不会有太多的担忧。虽然python提供了大量的可实用的库,但是在版本兼容方面你会发现python就是一个坑!快速迭代开发,应该选用一个更好的语言!
以前对于遇到的计算机的问题,我都会觉得有相应的解决方案,而并不考虑问题的源头,这恰恰是一种不正确的思维方式,解决问题只能是 当下的事情,但是长远的看,了解了问题的源头才是关键,比如python是不是一门好的语言?你就可以解释了,虽然带有片面性,但是根据你的实际情况,你就能说他是不是一门好的语言。