即使使用-lpthread选项,Sqlite3库也会出现线程错误

时间:2017-01-15 14:43:30

标签: c++ sqlite ide codeblocks

我正在为我的项目使用Code :: Blocks IDE。

到目前为止,我下载了sqlite3 amalgation文件,使用make install安装它们并将libsqlite3.a库链接到我的项目 项目 - > 构建选项 - > 链接器设置并添加了libslite3.a文件。

现在,当我尝试构建项目时,出现了undefined reference to pthread_mutex_trylockundefined reference to pthread_create等错误。

我在我的主要内容中添加了pthreadthreadmutex标题,我在项目中添加了选项-lpthreadpthread - > 构建选项 - > 其他编译器选项,但我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:1)

-l<library>是链接器选项,而不是编译器选项,因此在Code :: Blocks中 它进入其他链接器选项

从编译器选项中删除-lpthread并将其添加到链接器 选项可能就足够了。

然而,在GCC中启用pthreads多线程的正确,可移植的方法是 将选项-pthread(不是-lpthread)添加到两个编译器选项: -

项目 - &gt; 构建选项 - &gt; 编译器设置 - &gt; 其他编译器选项

和链接器选项:

项目 - &gt; 构建选项 - &gt; 链接器设置 - &gt; 其他链接器选项

此选项告诉编译器执行正确的操作 生成符合pthreads的代码并告诉链接器做正确的事情 将它链接到主机平台的POSIX线程库。

在您的计划pthreads

中使用#include <pthreads.h>