gpt4 book ai didi

c++ - 包含没有 header 的 SO 文件

转载 作者:行者123 更新时间:2023-11-28 04:41:40 24 4
gpt4 key购买 nike

我最近参与了一个基本游戏引擎的制作。我决定将我所有的中间件放入一个 Externals 目录,其中一个 bash 脚本将我所有的中间件构建到 Binaries 目录中的共享对象文件中。

在我的 CmakeLists.txt 文件中,我可以将这些库链接到我的主要可执行文件中,如下所示:

add_library (glfw SHARED IMPORTED)
set_target_properties (glfw PROPERTIES IMPORTED_LOCATION
${ENGINE_BINARIES_DIR}/Libraries/Shared/libglfw.so.3.2
)

...

target_link_libraries (Engine glfw)

但是,当我尝试在我的主文件中包含 GLFW/glfw3.h 时,它无法编译。这是有道理的,因为没有glfw3.h文件;但是,将 glfw 包含到我的项目中的所有其他尝试都失败了。

TL ;恢复

从现有共享对象库中包含 header 的最佳方法是什么?是否可以在没有 includes/glfw 目录的情况下实现这一目标,或者是否需要修改他们的代码/项目结构以加载这些功能?

最佳答案

我现在意识到我的错误。

在发布这个问题之前,我对共享对象/DLL 和构建 GLFW 做了一些研究;但是,我相信我对共享库是什么以及它是如何工作的仍然很困惑。

我现在意识到你,事实上,需要包含头文件;因为它包含中间件代码的声明,而libglfw.so.3.2 库包含代码的定义

因此,我通过将 .so 文件保存在 Libraries/Shared 目录中并将 GLFW 头文件保存在 External 目录中并使用 CMake 指向来解决了我的问题两者的编译器/链接器。

关于c++ - 包含没有 header 的 SO 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50071654/

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