gpt4 book ai didi

c++ - Linux dlerror 从 dlopen 返回我无法解释的错误消息

转载 作者:太空狗 更新时间:2023-10-29 21:41:38 24 4
gpt4 key购买 nike

我在使用 C++/Linux 中的 dlopen 函数时遇到问题。

void * hsiftgpu = dlopen("/full/path/libsiftgpu.so", RTLD_LAZY);

我假设 dlerror() 出现的任何错误都会告诉我无法找到/打开 libsiftgpu.so。这是我检查错误的代码:

if(hsiftgpu == NULL){
std::cout << "Could not load libsiftgpu.so" << '\n';
fprintf(stderr, "dlopen failed: %s\n", dlerror());
return 0;
}

相反,它告诉我:

dlopen failed: libcudart.so.6.5: cannot open shared object file: No such file or directory

我对 Linux 中的文件处理不是很熟悉,所以我可能遗漏了一些明显的东西。我想知道在调用 dlopen 之前是否需要重置某些内容,或者 libsiftgpu.so 是否正在调用 libcudart.so.6.5?无论哪种方式,此错误消息对我来说都没有多大意义。

我已经尝试将路径添加到 LD_LIBRARY_PATH(尽管出于安全考虑不建议这样做,但我只是想看看它是否可行)和/etc/lib.conf.so/我还检查以确保两者可执行文件和 .so 库以相同的 ELF-64 格式编译。

我已经想不出要检查的东西了,而且我无法解释错误消息。感谢任何指导或可能的解释。

最佳答案

事实证明,这是一个可执行文件指向 32 位库的情况,而它本应指向 64 位库。我给每个评论的人加分。

关于c++ - Linux dlerror 从 dlopen 返回我无法解释的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28329504/

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