c++ - boost 1.53 python fatal error LNK1104 boost_python-vc110-mt-gd-1_53.lib

标签 c++ python boost visual-studio-2012

我正在尝试(现在几天)构建一个由 C++ 代码生成的 DLL,使用 boost/python 供 python 使用。我是一名来自德国的学生,直到现在主要与 Java 打交道(我之前用 C++ 编写了一些基本的 OpenGL 和 gimp 过滤器)。所以请提前原谅我糟糕的英语或 C++ 初学者的错误。我的意思是,与 C++ 相比,用 Java 编程确实要舒服得多。但冲突已经够多了。

错误:

LINK : fatal error LNK1104: File "boost_python-vc110-mt-gd-1_53.lib" could not be openend

我的预设:

-使用 MS Visual Studio 2012 (11.0)

-使用 boost_1_53_0

-使用python2.7(我听说3.3可能会导致一些问题)

我做了什么:

已安装 python 并将其添加到 PATH。然后在 VS 中创建一个新的空项目和一个包含以下内容的类文件“Test.cpp”,如 boost 教程页面所述:

char const* greet()
{
    return "hello world";
}

#include <boost/python.hpp>

BOOST_PYTHON_MODULE(Test)
{
    using namespace boost::python
    def("greet", greet);
}

然后是我的新部分,在 VS 项目属性中:

配置属性 > 常规 > 配置类型 > 动态库 (.dll)

C/C++ > General > Addition Includedirectories > C:[..]\boost_1_53_0

Linker > General > Additional Library Directories > C:[..]boost_1_53_0\stage\lib

根据错误,我假设我对 Linker 或 Include 做错了什么。我还将 Linker > General > Additional Library Directories 更改为 boost_1_53_0\libs 因为我不确定,但发生了同样的错误。是的,我正确地包含了 python。我也不确定我是否必须将 python 旁边的其他东西放入 Linker > Input for boost。

然后我使用 bjam 构建 boost,除了 msvc-11.0 之外没有任何选项,以确保拥有我需要的一切(尽管我读到 boost/python 不需要额外的构建)并且仍然遇到相同的错误。有人能帮我吗?我很想一步一步地描述要做什么。我真的对此感到绝望。

顺便说一句:几天前我遇到了和这个人一样的错误Linker error LNK1104 with 'libboost_filesystem-vc100-mt-s-1_49.lib'然后停止处理它,当我重新开始时,我遇到了全新的错误(我无法告诉你这是怎么发生的)。

最佳答案

因为它正在寻找静态库,所以添加 BOOST_PYTHON_STATIC_LIB 标志,转到 VS 属性 -> 预处理器 -> 处理器定义,添加 BOOST_PYTHON_STATIC_LIB 标志。

关于c++ - boost 1.53 python fatal error LNK1104 boost_python-vc110-mt-gd-1_53.lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15881771/

相关文章:

python - 带文本的 PyQt 框架

python - SQLAlchemy:具有复合主键的关系表

c++ - Boost 线程中断在跨越 DLL 边界时不起作用

C++/boost : how to signal async task completion?

c++ - 如何检查模板类型是否是变体类型的类型之一?

java - 处理字符串 : Java client & C++ server 的正确方法是什么

c++ - IOS Box2D - body 遵循基于一组具有波动速度的点的特定路径

c++ - 如何查找 QTextEdit 中显示的数据长度

c++ - 如何在选择文件夹对话框中为静态控件的背景着色?

python - tkinter 有表格小部件吗?