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

Boost.Python and error LNK1104: cannot open file 'boost_python-vc100-mt-gd-1_55.lib'

本文关键字:lib python-vc100-mt-gd-1 boost 文件 错误 Python LNK1104 Boost      更新时间:2023-10-16

我正试图按照本教程将Python嵌入C++应用程序,但从一开始就遇到了障碍。让我带你浏览一下…

  1. 我将boost库提取到C:\codelibrarys\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++目录>包含目录中:
    • C:\codelibrarys\C++\boost_1_55_0
    • C: \代码库\C++\boost_1_55_0\boost\python
    • C: \Python27\include
  4. 在我的VC++目录>库目录中:
    • C:\codelibrarys\C++\boost_1_55_0
    • C: \代码库\C++\boost_1_55_0\libs
    • C: \Python27\libs
  5. 在我的VC++目录>源目录中:
    • C:\Python27\include
    • C: \代码库\C++\boost_1_55_0

添加这些并运行后,我收到错误LNK1104:无法打开文件'oost_python-vc100-mt-gd-1_55.lib'.

好吧,事实证明我需要实际安装boost库。好的我这样做了。它创建了新文件夹"…"。。\boost_1_55_0\stage\lib.'在它内部,有一个名为libboost_python-vc100-mt-gd-1_55.lib的库文件和另一个非常相似但不包括"gd"部分的库文件。

在"Linker">"General">"Additional Library Directories"下,我添加了C:\codelibraries\C++\boost_1_55_0\stage\lib。我又跑了一遍。它仍然给出了相同的链接器错误LNK1104:无法打开文件'boost_python-vc100-mt-gd-1_55.lib'。我转到'stage\lib'文件夹,发现没有boost_pithon-vc100-mt-gd-1_55lib',只有*lib*boost_pathon-vc100-mt-gd-1_5.5lib.

我将libboost_python-vc100-mt-gd-1_55.lib重命名为boost_pathon-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位机器有关吗?我的includes不正确吗?如果可以的话,请帮忙。非常感谢提供任何信息,谢谢。

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

在我的例子中,stage/lib中只有.lib文件以libboost*开头,而不是以boost*开始。所以我必须从http://boost.teeks99.com/其具有所有libboost*.lib、boost*.ib和boost*.dll版本,并将boost*.lib和boost*.dll添加到stage\lib库中,以便其工作。