使用Mac上的Qt提升Tcp-Asio-Server Link故障

时间:2014-06-01 17:57:04

标签: c++ macos qt boost

我有一个非常简单的类,我将通过使用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   

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

标准回复将是&#34;重新运行qmake&#34;。删除整个阴影构建目录更简单。从项目源向上一级,将有build-...个文件夹。删除所有这些,然后重新构建。

查看项目文件(带有LIBS +=行的文件)是否是最新的最简单的方法是添加一些无效的内容(如库名中的拼写错误)。如果它仍然&#34;建立&#34;没有直接针对你的错字(一个丢失的库)显示错误,那么你知道你的构建不是基于当前的项目文件,你应该重新运行qmake或删除阴影构建文件夹,以便在那里重新创建所有内容