【问题标题】:First time POCO C++ library use on Gentoo第一次在 Gentoo 上使用 POCO C++ 库
【发布时间】:2014-10-03 05:43:06
【问题描述】:

我通过emerge安装了POCO,在第一次尝试编译时我得到了

undefined reference to `Poco::RefCountedObject::RefCountedObject()

这清楚地表明它没有找到库。 不是emerge为你做链接吗?

如何在 Gentoo 中编译或正确链接 POCO 以便它找到库?

#include "Poco/ActiveMethod.h"
#include "Poco/ActiveResult.h"
#include <utility>
#include <iostream>

using Poco::ActiveMethod;
using Poco::ActiveResult;

class ActiveAdder
{
public:
    ActiveAdder(): add(this, &ActiveAdder::addImpl)
    {
    }

    ActiveMethod<int, std::pair<int, int>, ActiveAdder> add;

private:
    int addImpl(const std::pair<int, int>& args)
    {
        return args.first + args.second;
    }
};

int main(int argc, char** argv)
{
    ActiveAdder adder;

    ActiveResult<int> sum = adder.add(std::make_pair(1, 2));
    // do other things
    sum.wait();
    std::cout << sum.data() << std::endl;

    return 0;
}

【问题讨论】:

  • 我们需要更多信息:你是如何编译的?还有“没有为你做链接,我只是#include?”那是什么意思?你是如何安装 Poco 库的?等等等等
  • @JaviV 是的,这些库是通过emerge dev-libs/poco 1.4.5-r1 安装的 描述:C++ 类库可以简化和加速以网络为中心的可移植应用程序的开发

标签: c++ poco-libraries gentoo


【解决方案1】:

POCO gentoo ebuild 有 use 标志,可以启用 POCO 的某些部分。

feniks@charlotte  ~  equery uses poco
[ Legend : U - final flag setting for installation]
[        : I - package is installed with flag     ]
[ Colors : set, unset                             ]
 * Found these USE flags for dev-libs/poco-1.6.0:
 U I
 + + 7z                : <unknown>
 + + apache2           : Add Apache2 support
 + + cppparser         : <unknown>
 + + crypto            : <unknown>
 + + data              : <unknown>
 + + doc               : Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead
                         of globally
 + + file2pagecompiler : <unknown>
 - - iodbc             : Add support for iODBC library
 + + json              : <unknown>
 - - mongodb           : <unknown>
 + + mysql             : Add mySQL Database support
 + + net               : <unknown>
 - - odbc              : Add ODBC Support (Open DataBase Connectivity)
 + + pagecompiler      : <unknown>
 + + pdf               : Add general support for PDF (Portable Document Format), this replaces the pdflib and cpdflib
                         flags
 + + sqlite            : Add support for sqlite - embedded sql database
 + + ssl               : Add support for Secure Socket Layer connections
 + + tests             : <unknown>
 + + util              : <unknown>
 + + xml               : Add support for XML files
 + + zip               : <unknown>

此外,您应该将您的程序与 poco 本身链接起来。 PocoFoundation 中的所有基本类(如您的情况)。

例如,这里是我的链接标志(由 CMake 生成):

test.o /usr/lib64/libPocoJSON.so.30 /usr/lib64/libPocoXML.so.30 -lboost_program_options-mt -lboost_locale-mt -lboost_system-mt -lboost_filesystem-mt cpsp/libtinyhttp_cpsp.a api/libtinyhttp_api.a /usr/lib64/libPocoFoundation.so.1.6.0 -lpcre -lz -lpthread -ldl -lrt -lexpat 

【讨论】:

    【解决方案2】:

    使用 QT websockets!!!!!!!!!!!!!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多