我从官方网站下载boost1.55 zip,然后使用命令bootstrap
和b2
进行构建。
我尝试了示例代码,但它有链接错误。
1>LINK : fatal error LNK1104: cannot open file 'libboost_python-vc120-mt-gd-1_55.lib'
以下是我的所作所为。
在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
#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:
答案 0 :(得分:2)
&#34; LIBRARY DIRECTORY&#34;应该引用C:\boost_1_55_0\stage\lib
而不是C:\boost\boost_1_55_0\libs
。