我有一个非常简单的类,我将通过使用Asio通过TCP作为Object发送。我找到了many examples on the Internet,但是当我编译代码时,我得到了链接失败。
#include <boost/archive/text_oarchive.hpp>
void async_write(){
std::ostringstream archive_stream;
boost::archive::text_oarchive archive(archive_stream); // here it fails
//....
}
我通过macports下载了boost。
我的Qt项目文件:
INCLUDEPATH += /opt/local/include
LIBS += -L/opt/local/lib
LIBS += -lboost_system-mt -lboost_filesystem-mt -lboost_serialization-mt
失败:
架构x86_64的未定义符号: &#34; boost :: archive :: text_oarchive_impl :: save(std :: string const&amp;)&#34;,引自: 在tcpsession.o中的void boost :: archive :: save_access :: save_primitive(boost :: archive :: text_oarchive&amp;,std :: string const&amp;) &#34; boost :: archive :: text_oarchive_impl :: text_oarchive_impl(std :: ostream&amp;,unsigned int)&#34;,引自: tcpsession.o中的boost :: archive :: text_oarchive :: text_oarchive(std :: ostream&amp;,unsigned int) &#34; boost :: archive :: basic_text_oprimitive :: ~basic_text_oprimitive()&#34;,引自: tcpsession.o中的boost :: archive :: text_oarchive_impl :: ~text_oarchive_impl() ld:找不到架构x86_64的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用) make: * [tcpserver]错误1
感谢任何帮助。
答案 0 :(得分:0)
标准回复将是&#34;重新运行qmake&#34;。删除整个阴影构建目录更简单。从项目源向上一级,将有build-...
个文件夹。删除所有这些,然后重新构建。
查看项目文件(带有LIBS +=
行的文件)是否是最新的最简单的方法是添加一些无效的内容(如库名中的拼写错误)。如果它仍然&#34;建立&#34;没有直接针对你的错字(一个丢失的库)显示错误,那么你知道你的构建不是基于当前的项目文件,你应该重新运行qmake或删除阴影构建文件夹,以便在那里重新创建所有内容