gpt4 book ai didi

c++ - Poco RWLock - 未定义对 'pthread_rwlock_wrlock@@GLIBC_2.2.5 的引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:42:12 26 4
gpt4 key购买 nike

我在 Ubuntu 14.04 x64 上构建一个守护程序应用程序,但出现链接器错误:

undefined reference to symbol 'pthread_rwlock_wrlock@@GLIBC_2.2.5'

代码是

#include <Poco/RWLock.h>

class DatabaseHandler
{
public:

typedef std::shared_ptr<DatabaseHandler> Ptr;

DatabaseHandler() {};
virtual ~DatabaseHandler() {};

virtual bool Connect(const STRING& connstring);
bool Disconnect();

BOOL IsConnected() {
return (m_pSession && m_pSession->isConnected());
}

protected:
std::unique_ptr<Poco::Data::Session> m_pSession;
Poco::RWLock m_write_lock;
};


class FADatabaseHandler : public DatabaseHandler
{
public:
EDBReturnValues UpdateHouse(TFAData& data);

private:
BOOL HouseExists(const UINT HouseId);
};

和实现..

EDBReturnValues FADatabaseHandler::UpdateHouse(TFAData& data)
{
Poco::ScopedWriteRWLock lock(m_write_lock);
.....
}

这个文件的编译器命令行是

g++ -Wall -fexceptions -std=c++11 -g -lrt -lm -lpthread -DPOCO_STATIC -DPOCO_NO_AUTOMATIC_LIBS -DUSING_POCO_LIB -DBUILD_AS_SERVER -I/usr/local/mysql/include -c /home/daniele/src/TBServer/FADatabaseHandler.cpp -o obj/Debug/FADatabaseHandler.o

如果我评论 RWLock.h 包含、m_write_lock 和 ScopedWriteRWLock 调用,我会得到以下错误:

/usr/bin/ld: /usr/local/lib/libPocoFoundationd.a(TextEncoding.o): undefined reference to symbol 'pthread_rwlock_wrlock@@GLIBC_2.2.5'

我哪里错了?

问候。

最佳答案

如果你使用 CMake,你可以这样做:

...
find_package(Threads)
...

target_link_libraries(
...
${CMAKE_THREAD_LIBS_INIT}
)

关于c++ - Poco RWLock - 未定义对 'pthread_rwlock_wrlock@@GLIBC_2.2.5 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26703547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com