正在加载.so库
loading .so library C++
我正在尝试加载库库。所以,当我尝试if exist返回true,但是当我使用dlopen返回库不存在。
std::ifstream ifile("library.so"); if (ifile) {
cout << "Exist!" << std::endl; }
cout << "C++ dlopen demonn";
// open the library cout << "Opening hello.so...n"; void* handle = dlopen("library.so", RTLD_LAZY);
if (!handle) {
cerr << "Cannot open library: " << dlerror() << 'n';
return 1; }
dlopen
在它可以搜索的路径中受到很大限制(简而言之:默认路径加上LD_LIBRARY_PATH
变量——请参阅完整的文档以获得完整的列表)。您的ifstream
查找当前目录(无论它是什么),它很可能不包含在dlopen
考虑的默认路径中。
解决方案包括:
- 相应地设置LD_LIBRARY_PATH(这通常是首选的方法)。
- 使用绝对路径而不是相对路径。
- 将库放在默认路径之一(例如:
/lib
或/usr/lib
).
相关文章:
- 加载共享库时C++错误:libopencv_ximgproc.so.4.4
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 加载共享库时出错:libbsoncxx.so._noabi:无法打开共享对象文件:没有此类文件或目录
- 如何更改路径以修复错误"./main:加载共享库 libmkl_core.so 时出错?
- 使用 jna 加载 lib .so
- C++调用lua_dostring来加载具有"require('cjson')"的Lua Scrip引发错误:cjson.so:未定义的符号:lua_getfield
- 加载共享库时出现"错误:libSDL2_mixer-2.0.so.0:无法打开共享对象文件:没有这样的文件或目录
- 来自Pascal DLL/SO中的C 加载和调用功能
- java.lang.UnsatisfiedLinkError: dlopen failed: 无法加载"libPrivateSsl.so"所需的库"libcrypto.so.1.0.0";
- Android本机运行时无法加载符号,即使它们实际上是在加载的.so文件中找到的
- 加载共享库时的错误:libgsl.so.0:无法打开共享对象文件:没有这样的文件或目录
- RedHatLinux :是否可以以编程方式加载 libcert.so 共享对象
- 加载共享库时出错:libQt5Multimedia.so.5:无法打开共享对象文件:没有这样的文件或目录
- 在Python脚本中加载.SO文件时未定义的符号错误
- 加载共享库时出错:libsystemc-2.3.0.so
- 加载共享库时出现thrax编译器错误:libthrax.so.0
- 从新发行版和不同发行版加载LD_PRELOAD libstdc++.so.6和libc.so.6时出现浮点异常
- 在运行时加载 .so 的 C++ 静态强制转换
- 错误:ld.so:无法预加载LD_PRELOAD中的对象'/opt/xyz/mylib.so':忽略
- 如何将c++库作为共享对象文件(.so)加载到Python中?