Boost.Python和错误LNK1104:无法打开文件'boost_python-vc100-mt-gd-1_55.lib'

时间:2014-02-11 18:17:30

标签: python c++ visual-c++ boost linker

我正在尝试按照this教程将Python嵌入到C ++应用程序中,并且从一开始就遇到了障碍。让我带你通过它......

  1. 我将boost库解压缩到C:\ codelibraries \ c ++ \ boost_1_55_0
  2. 我在VC +++中创建了一个新项目,并在其中创建了一个'test1.cpp'文件,其中包含以下代码:

    #include <boost/python.hpp>
    
    int main(int, char**) {
     Py_Initialize();
    
     Py_Finalize();
     return 0;
    }
    
  3. 然后我将以下目录放在我的VC ++目录中&gt;包括目录:
    • C:\ codelibraries \ C ++ \ boost_1_55_0
    • C:\ codelibraries \ C ++ \ boost_1_55_0 \升压\蟒
    • C:\ Python27 \包括
  4. 在我的VC ++目录中&gt;图书馆目录:
    • C:\ codelibraries \ C ++ \ boost_1_55_0
    • C:\ codelibraries \ C ++ \ boost_1_55_0 \库
    • C:\ Python27 \库
  5. 在我的VC ++目录中&gt;来源目录:
    • C:\ Python27 \包括
    • C:\ codelibraries \ C ++ \ boost_1_55_0
  6. 添加并运行后,我收到错误LNK1104:无法打开文件'boost_python-vc100-mt-gd-1_55.lib'

    好的,事实证明我需要实际install升级库。精细。我这样做了。它会创建新文件夹'.. \ boost_1_55_0 \ stage \ lib。'在其中,有一个名为 libboost_python-vc100-mt-gd-1_55.lib 的库文件,另一个非常相似但不包括'gd'部分。

    在“链接器”下&gt; '一般'&gt; “其他库目录”,我添加了C:\ codelibraries \ c ++ \ boost_1_55_0 \ stage \ lib。我又跑了仍然会给出相同的链接器错误LNK1104:无法打开文件'boost_python-vc100-mt-gd-1_55.lib'。我转到'stage \ lib'文件夹,看到没有boost_python-vc100-mt-gd-1_55.lib,只有 * lib * boost_python-vc100-mt-gd-1_55.lib

    我将 libboost_python-vc100-mt-gd-1_55.lib 重命名为 boost_python-vc100-mt-gd-1_55.lib 并重新运行构建。

    它成功了,但是给了我其他链接器错误:

    error LNK1120: 3 unresolved externals
    error LNK2001: unresolved external symbol __imp___Py_NoneStruct
    error LNK2019: unresolved external symbol __imp__Py_Finalize referenced in function _main
    error LNK2019: unresolved external symbol __imp__Py_Initialize referenced in function _main
    

    现在我被困住了,来到这里。我写的几行代码是不正确的?这与我使用64位机器有什么关系吗?我的包含不正确吗?如果可以的话请帮忙。非常感谢任何信息,谢谢。

2 个答案:

答案 0 :(得分:4)

我回到这个问题,因为我不想让它没有答案。事实证明,问题是尝试使用64位的Python实现和32位版本的boost库。切换到32位Python后,事情变得容易多了。如果您不必使用64位Python,我建议不要使用它。

答案 1 :(得分:1)

在我的例子中,只有.lib文件以libboost *开头而不是stage / lib中的boost *。所以我必须从http://boost.teeks99.com/下载具有所有libboost * .lib,boost * .lib和boost * .dll版本的二进制文件,并将boost * .lib和boost * .dll添加到stage \ lib库为了它的工作。

相关问题