gpt4 book ai didi

C++ Linux 错误加载共享库 `undefined symbol: pthread_create`

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:07 26 4
gpt4 key购买 nike

我已经创建了一个可以很好地编译所有内容的库。库文件是“libTextSearch.so”

在库内部,它创建了一个线程。我为此使用 C++11 线程:

TextSearch::TextSearch(){
std::thread t(&TextSearch::ThreadProc, this);
t.detach();
}

正如我所说,库编译并且我有 libTextSearch.so 文件。

我正在尝试在不同的应用程序中加载库:

void* handle = dlopen("libTextSearch.so", RTLD_LAZY);
if(!handle){
//std::cout << "\n Failed to load libTextSearch.so\n\n";
fprintf(stderr, "dlopen failed: %s\n", dlerror());
return 1;
}

我已经将包复制到 /usr/lib。这是我得到的输出:

dlopen failed: /usr/lib/libTextSearch.so: undefined symbol: pthread_create
RUN FINISHED; exit value 1; real time: 0ms; user: 0ms; system: 0ms

我查过这个question .我认为这是相关的,但我不知道将其应用于我的情况。

有什么想法吗?

最佳答案

只需预先使用 dlopen threadRTLD_GLOBAL

void* handlePthread = dlopen("libpthread.so.0", RTLD_GLOBAL | RTLD_LAZY);
if(!handlePthread ){
//std::cout << "\n Failed to load libpthread.so.0\n\n";
fprintf(stderr, "dlopen failed: %s\n", dlerror());
return 1;
}

关于C++ Linux 错误加载共享库 `undefined symbol: pthread_create`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42912222/

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