#include
#include
int main(void)
{
void handle=NULL;
handle = dlopen("**.so",RTLD_LAZY);
if(handle)
{
put("sada");
}
}
请问网上说的添加-ldl该在哪里添加 我建的工程没有makefile文件 那么在工程属性的哪个地方添加 谢谢
undefined referese to dlopen eclipse c++开发编译的时候遇到的
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-01 16:07关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题是关于如何正确地在C++程序中使用
dlerror函数。dlerror是一个标准库函数,它用于从动态链接库(如.so)中获取错误信息。首先,你需要确保你的项目已经编译和链接成功。如果还没有这样做,请按照以下步骤进行:
-
编译你的源代码:
g++ -o program program.cpp -
运行编译后的程序:
./program -
检查是否得到正确的输出。
-
如果你在运行过程中遇到了错误,你可以打印出
dlerror的信息来查看错误原因。
如果你是在Linux系统上运行这个程序,那么你应该能看到类似这样的错误消息:
/home/user/program: error while loading shared libraries: libfoo.so.1: cannot open shared object file: No such file or directory这表明你的动态链接库(例如.so文件)无法打开或找不到。
为了解决这个问题,你需要将动态链接库添加到你的路径中。通常情况下,你可以在你的
/etc/ld.so.conf文件中添加你的动态链接库的目录,然后重新加载你的.so文件:sudo nano /etc/ld.so.conf.d/usr/local/lib.so.conf添加如下内容:
/usr/local/lib/保存并退出编辑器。
然后,你需要重新加载你的动态链接库:
sudo ldconfig现在,你的动态链接库应该可以被找到并使用了。如果你仍然遇到问题,可能是因为你的动态链接库不是可执行的,或者它被放置在了不适当的目录下。在这种情况下,你可能需要修改你的动态链接库的权限,并将其放在一个易于访问的位置。
最后,如果你正在使用Makefile来构建你的项目,你需要在Makefile中添加一条命令来自动处理这个问题。例如:
.PHONY all all: $(MAKE) -C program这样,在每次构建时,都会自动检查动态链接库是否存在,并将其添加到PATH环境变量中。
解决 无用评论 打赏 举报-