Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Sqlite3库给出线程错误,即使使用-lpthread选项_C++_Sqlite_Ide_Codeblocks - Fatal编程技术网

C++ Sqlite3库给出线程错误,即使使用-lpthread选项

C++ Sqlite3库给出线程错误,即使使用-lpthread选项,c++,sqlite,ide,codeblocks,C++,Sqlite,Ide,Codeblocks,我正在为我的项目使用Code::Blocks IDE 到目前为止,我下载了sqlite3 amalgation文件,使用makeinstall安装了它们,并将libsqlite3.a库链接到了我的项目 项目->构建选项->链接器设置,并添加libslite3.a文件 现在,当我尝试构建我的项目时,会出现一些错误,比如未定义对pthread\u mutex\u trylock的引用,或者未定义对pthread\u create的引用 我在main中包含了pthread、thread、mutex头,

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

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

现在,当我尝试构建我的项目时,会出现一些错误,比如未定义对pthread\u mutex\u trylock的引用,或者未定义对pthread\u create的引用

我在main中包含了pthread、thread、mutex头,在project->build options->other copiler选项中添加了选项-lpthread和pthread,但仍然得到了相同的错误。

-l是链接器选项,而不是编译器选项,所以在Code::Blocks中 它会出现在其他链接器选项中

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

然而,在GCC中启用pthreads多线程的正确、可移植的方法是 要将选项-pthread not-lpthread添加到两个编译器选项中,请执行以下操作:-

项目->生成选项->编译器设置->其他编译器选项

以及链接器选项:

项目->生成选项->链接器设置->其他链接器选项

此选项告诉编译器对这两个对象执行正确的操作 生成与pthreads兼容的代码,并告诉链接器对其执行正确的操作 将其与主机平台的POSIX线程库链接


要在程序中使用pthreads,请在链接sqlite3.so文件而不是.a文件时包含项目生成。足够吗?您的解决方案是可行的,但现在我有一个未定义的对dlerror的引用,如果我在linker options libsqite3.so中将-dl作为一个选项链接,则无法修复该引用。只需在其他链接器选项中使用-lsqlite3,链接器就会选择.so作为首选项。如果libsqlite3.so不在默认libdirs/usr/lib、/usr/local/lib中,则需要在搜索目录->链接器中提供其路径