使用Windows Visual Studio 2013提升1.55 Python,链接错误

时间:2014-10-13 13:57:33

标签: python-2.7 windows-8 visual-studio-2013 boost-python

我从官方网站下载boost1.55 zip,然后使用命令bootstrapb2进行构建。 我尝试了示例代码,但它有链接错误。

1>LINK : fatal error LNK1104: cannot open file 'libboost_python-vc120-mt-gd-1_55.lib'

以下是我的所作所为。

  1. 新项目win32控制台应用程序,DLL为空。
  2. VC++ DIRECTORIES中添加包含路径,库路径,如下所示。

    INCLUDE DIRECTORIES: C:\boost\boost_1_55_0;C:\Python27\include 
    LIBRARY DIRECTORIES: C:\boost\boost_1_55_0\libs;C:\Python27\libs
    
  3. #define BOOST_PYTHON_STATIC_LIB
    #include <boost/python.hpp>
    using namespace boost::python;
    
    struct World
    {
        void set(std::string msg) { this->msg = msg; }
        std::string greet() { return msg; }
        std::string msg;
    };
    
    
    BOOST_PYTHON_MODULE(hello)
    {
        class_<World>("World")
            .def("greet", &World::greet)
            .def("set", &World::set);
    }
    

    修改

    如果我添加库目录C:\boost_1_55_0\stage\lib,如下面的答案,它会发生很多错误,大约200 下面只是错误的一部分。

      

    1&gt; ------ Build build:Project:hello,Configuration:Debug Win32   ------ 1&gt; hello.cpp 1&gt; c:\ python27 \ include \ pymath.h(22):警告C4273:&#39; round&#39; :不一致的dll连接1&gt; c:\ program files   (x86)\ microsoft visual studio 12.0 \ vc \ include \ math.h(516):见   之前对'round&#39;的定义1&gt; c:\ program files(x86)\ microsoft   visual studio 12.0 \ vc \ include \ xtgmath.h(190):警告C4273:&#39; _hypot&#39;   :不一致的dll连接1&gt; c:\ program files   (x86)\ microsoft visual studio 12.0 \ vc \ include \ math.h(538):看   之前的定义&#39; _hypot&#39; 1&gt; c:\ program files(x86)\ microsoft   visual studio 12.0 \ vc \ include \ xtgmath.h(206):警告C4273:&#39; round&#39; :   不一致的dll连接1&gt; c:\ program files(x86)\ microsoft   visual studio 12.0 \ vc \ include \ math.h(516):参见之前的定义   &#39;轮&#39; 1&gt; c:\ boost_1_55_0 \ boost \ python \ opaque_pointer_converter.hpp:   警告C4819:该文件包含一个不能的字符   在当前代码页(949)中表示。以Unicode格式保存文件   格式以防止数据丢失   1&gt; c:\ boost_1_55_0 \ boost \ python \ return_opaque_pointer.hpp:警告   C4819:该文件包含无法在中表示的字符   当前代码页(949)。以Unicode格式保存文件以防止   数据丢失1>创建库C:\ Users \ User \ documents \ visual studio   2013 \ Projects \ hello \ Debug \ hello.lib和object   C:\ Users \ User \ documents \ visual studio   2013 \ Projects \ hello \ Debug \ hello.exp 1&gt; hello.obj:错误LNK2019:   未解析的外部符号__imp__PyString_FromStringAndSize   在函数&#34; public中引用:struct _object * __thiscall   boost :: python :: to_python_value,class std :: allocator&gt;常量   &amp;&gt; :: operator()(类std :: basic_string,类std :: allocator&gt; const&amp;)const&#34;   (?? R'$ to_python_value @ ABV?$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@@蟒@ @@升压@@ QBEPAU_object ABV?$ basic_string的@杜?$ @ char_traits @ d @@性病V'$ @分配器@ d @@ 2 STD @@@ Z)   1&gt; libboost_python-vc120-mt-gd-1_55.lib(builtin_converters.obj):错误   LNK2001:未解析的外部符号__imp__PyString_FromStringAndSize   1&gt; libboost_python-vc120-mt-gd-1_55.lib(str.obj):错误LNK2001:   未解析的外部符号__imp__PyString_FromStringAndSize   1&gt; libboost_python-vc120-mt-gd-1_55.lib(function_doc_signature.obj):   错误LNK2001:未解析的外部符号   __imp__PyString_FromStringAndSize 1&gt; libboost_python-vc120-mt-gd-1_55.lib(list.obj):错误LNK2001:   未解析的外部符号__imp___Py_NoneStruct   1&gt; libboost_python-vc120-mt-gd-1_55.lib(tuple.obj):错误LNK2001:   未解析的外部符号__imp___Py_NoneStruct   1&gt; libboost_python-vc120-mt-gd-1_55.lib(function_doc_signature.obj):   错误LNK2001:未解析的外部符号__imp___Py_NoneStruct   1&gt; libboost_python-vc120-mt-gd-1_55.lib(object_protocol.obj):错误   LNK2001:未解析的外部符号__imp___Py_NoneStruct   1&gt; libboost_python-vc120-mt-gd-1_55.lib(pickle_support.obj):错误   LNK2001:未解析的外部符号__imp___Py_NoneStruct   1&gt; libboost_python-vc120-mt-gd-1_55.lib(dict.obj):错误LNK2001:   未解析的外部符号__imp___Py_NoneStruct   1&gt; libboost_python-vc120-mt-gd-1_55.lib(str.obj):错误LNK2001:   未解析的外部符号__imp___Py_NoneStruct   1&gt; libboost_python-vc120-mt-gd-1_55.lib(from_python.obj):错误   LNK2001:未解析的外部符号__imp___Py_NoneStruct   1&gt; libboost_python-vc120-mt-gd-1_55.lib(function.obj):错误LNK2001:   未解析的外部符号__imp___Py_NoneStruct   1&gt; libboost_python-vc120-mt-gd-1_55.lib(module.obj):错误LNK2001:

1 个答案:

答案 0 :(得分:2)

&#34; LIBRARY DIRECTORY&#34;应该引用C:\boost_1_55_0\stage\lib而不是C:\boost\boost_1_55_0\libs