boost.python 库,在 VC 中如何选择?
python吧
全部回复
仅看楼主
level 4
bjam 编译时候有如下3种库:
link=static runtime-link=static
link=static runtime-link=shared
link=shared runtime-link=shared
而我的 VS 2013 程序用的是第三种库(link=sharedruntime-link=shared),1>LINK : fatal error LNK1104: 无法打开文件“boost_python-vc120-mt-gd-1_58.lib”
我的程序如下:
#define BOOST_PYTHON_SOURCE
#include "stdafx.h"
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
#include <boost/python.hpp>
using namespace boost::python;
char const* greet()
{
return "hello, world";
}
struct World
{
void set(std::string msg) { this->msg = msg; }
std::string greet() { return msg; }
std::string msg;
};
BOOST_PYTHON_MODULE(MakeDll)
{
def("greet", greet);
class_<World>("World")
.def("greet", &World::greet)
.def("set", &World::set)
;
}
2015年08月10日 08点08分 1
level 10
不是很清楚吗,打不开lib文件。要么是文件不存在,要么权限不够,要么被其它程序占用了[泪]
2015年08月10日 10点08分 2
level 10
在VC下,动态联编也要lib的呀[泪]
2015年08月10日 10点08分 3
level 12
跟代码几毛钱关系啊[泪]
2015年08月10日 11点08分 4
level 4
我各种方式都生成成功的,而我发现用默认的 link=shared runtime-link=shared 方式生成的 dll(给pyhon用已经修改为pyd文件后缀),无法被python调用,python提示找不到模块。
而我把 libboost_python-vc120-mt-gd-1_58.lib 文件名改为 boost_python-vc120-mt-gd-1_58.lib 生成的 dll,python 能调用模块,只是如果boost封装C++类,VS编译会出错。
所以,我想应该是文件名不能随便修改,毕竟两个不同的东西。因此,想知道如何让 VS 调用的是 libboost_python-vc120-mt-gd-1_58.lib 而不是 boost_python-vc120-mt-gd-1_58.lib,或者有其他什么办法,让我的 python 能够正常调用以上 boost 封装的 c++?
谢谢!
2015年08月11日 01点08分 5
1