Visual Studio 8和Boost.Python库奇怪的链接
Visual Studio 8 and Boost.Python library strange linking
我是windows8和c++的新手。当我试图在两个不同的项目中编译vc8中的Python扩展时,我遇到了一个奇怪的问题(一个是非常简单的虚拟测试项目,另一个是一个相当大的项目,我想添加扩展)。
我提供了Boost所需的相同的include/library目录。Python到这两个项目。它们如下:
包括目录:
- C: boost-python boost_1_46_1
- C: Python27 包括
- C: boost-python lib boost_1_46_1 阶段
- C: Python27 libs
虚拟项目编译和工作没有问题,其他项目似乎缺少一个特定的库。vs8给出以下错误信息:
Error 3 fatal error LNK1104: cannot open file 'libboost_python-vc80-mt-gdp-1_46_1.lib'
libboost_python-vc80-mt-gdp-1_46_1。我在构建boost库时没有生成lib'。
我记得虚拟项目抱怨缺少"libboost_python-vc80-mt-gd-1_46_1"。当我没有包含'C:boost-pythonboost_1_46_1stagelib'时。但是在我提供了那个库目录之后,它编译起来没有问题。"libboost_python-vc80-mt-gd-1_46_1。
所以我很困惑为什么我的其他项目是寻找gdp而不是像我的假项目gd。在两个项目中,特定于python的代码部分是相同的。
这是我测试的虚拟代码:
#include <boost/python.hpp>
#include <boost/random.hpp>
#include <boost/random/normal_distribution.hpp>
using namespace boost::python;
boost::mt19937 gen;
struct World
{
std::string msg;
double mypi;
World(std::string msg): msg(msg) {
gen.seed(std::time(0));
} // added constructor
void set(std::string msg) { this->msg = msg; }
std::string greet() { return msg; }
double get() const { return mypi; }
void setter(double mypi) { this->mypi = mypi; }
double getgaussrand() {
boost::normal_distribution<> nd(0.0, 1.0);
boost::variate_generator<boost::mt19937&, boost::normal_distribution<> > var_nor(gen, nd);
return var_nor();
}
};
BOOST_PYTHON_MODULE(test_vs_proj_dll)
{
class_<World>("World", init<std::string>())
.def("greet", &World::greet)
.def("set", &World::set)
.def("getgaussrand", &World::getgaussrand)
.def_readonly("msg", &World::msg)
.def_readwrite("mypi", &World::mypi)
.add_property("rovalue", &World::get)
.add_property("value", &World::get, &World::setter)
;
}
根据它为自己选择的boost库命名,听起来您的大型项目使用STLPort库而不是编译器的本机库使用不同的参数构建,而您的虚拟项目则没有。
-gdp
- g -使用标准和运行时支持库的调试版本。
- d -构建代码的调试版本。
- p -使用STLPort标准库而不是编译器提供的默认库。
Windows Boost入门指南中的库命名部分有更多信息
相关文章:
- 使用转换器提升 Python 问题 - 静态链接
- 静态链接 glibc & boost_python36 for Python extension
- 编译时出现Boost.python链接错误
- Boost Python 不断链接 Python27 库
- 使用 python3 为 msvc 构建 boost python - 链接器错误
- 与 boost.python 和 python3 链接时出现问题
- 将 c++ 与 python 链接起来
- 链接boost.python示例的问题
- 使用Tensorflow/Bazel从C++调用Python时出现链接错误
- 嵌入C++时如何链接正确的python版本?
- SWIG - C ++到Python.链接系统库
- 在 Python-C++-C-Fortran 2003 程序中链接英特尔的 MKL
- 针对boost python进行链接会在PyCEGUI中产生未定义的引用
- Java/Python在C/C++中访问的动态链接库
- 使用 boost python 进行静态链接
- 在 python 中使用链接库中的方法时出现属性错误
- 如何在Qt Designer(Python)中创建弹出窗口(将主窗口与对话框链接)
- 如何链接 Python 的静态库用于 C 扩展?
- 如何链接Python(2.7.3)和cpp
- 在windows上链接Python到我的c++代码-链接错误