首页 文章

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

提问于
浏览
0

我有一个非常简单的类,我将通过使用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的未定义符号:“boost :: archive :: text_oarchive_impl :: save(std :: string const&)”,引用自:void boost :: archive :: save_access :: save_primitive(boost :: archive :: text_oarchive&, stc :: string const&)在tcpsession.o“boost :: archive :: text_oarchive_impl :: text_oarchive_impl(std :: ostream&,unsigned int)”中,引用自:boost :: archive :: text_oarchive :: text_oarchive(std :: ostream& ,unsigned int)在tcpsession.o“boost :: archive :: basic_text_oprimitive :: ~basic_text_oprimitive()”中,引自:tcpsession.o中的:boost :: archive :: text_oarchive_impl :: ~text_oarchive_impl()ld:symbol(s)找不到体系结构x86_64 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)make:* [tcpserver]错误1

任何帮助表示赞赏 .

1 回答

  • 0

    标准答复是"re-run qmake" . 删除整个阴影构建目录甚至更简单 . 从项目源向上一级,将有 build-... 个文件夹 . 删除所有这些,然后重新构建 .

    查看项目文件(具有 LIBS += 行的文件)是否是最新的最简单方法是向其添加无效的内容(如库名称中的拼写错误) . 如果它仍然没有显示直接针对你的错字(一个丢失的库)的错误,那么你知道你的构建不是基于当前的项目文件,你应该重新运行qmake或删除shadow build文件夹以便所有的东西将在那里重建 .

相关问题