gpt4 book ai didi

c++ - 链接库的顺序 C++ 链接器

转载 作者:行者123 更新时间:2023-11-27 22:57:48 25 4
gpt4 key购买 nike

我正在调试一个项目,该项目依赖于一组库,包括 libfreenect、OpenGL 和 OpenCL。问题是输出的是黑屏。

作为调试选项,我完全删除了 OpenCL 代码和链接库,以确保 OpenGL 正常工作,幸运的是它确实如此。

我注意到但不明白的是,我的项目使用这种库顺序运行良好

 -lfreenect -lGL -lglut -lGLU -lOpenCL 

另一方面,使用此命令时出现黑屏

-lfreenect -lOpenCL -lGL -lglut -lGLU

我的问题是:为什么链接库的顺序会影响程序的输出?

最佳答案

安装在您系统上的 OpenCL 接口(interface)库可能会引入与您的程序最终加载的 libGL.so 不同的 libGL.so。例如,如果您已经安装了 Mesa OpenCL 实现但正在使用 NVidia 驱动程序,那么针对 Mesa 的 OpenCL 的链接可能会导致 Mesa 的 libGL 与 OpenGL 在您的系统上运行所需的 libGL 发生冲突;当然这只是猜测。

尝试在任一链接顺序配置中对生成的程序二进制文件使用 ldd 并查看它实际引入了哪些共享对象(在哪些路径中)。

关于c++ - 链接库的顺序 C++ 链接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30880034/

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