首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dyld不加载Ogre库

dyld不加载Ogre库
EN

Stack Overflow用户
提问于 2019-03-27 23:46:48
回答 1查看 359关注 0票数 2

我正在尝试建立一个开发Ogre3D应用程序的环境。我已将Ogre手动编译到/opt/Ogre3D/ogre-1.11.5/build文件夹中,并在CLion中创建了一个具有以下内容的CMake项目:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.13)
project(sample)

set(CMAKE_CXX_STANDARD 14)
set(OGRE_DIR /opt/Ogre3D/ogre-1.11.5/build/sdk/cmake)

# specify which version and components you need
find_package(OGRE 1.11 REQUIRED COMPONENTS Bites RTShaderSystem)

# copy resource.cfg next to our binaries where OGRE looks for it
file(COPY ${OGRE_CONFIG_DIR}/resources.cfg DESTINATION ${CMAKE_BINARY_DIR})

add_executable(sample main.cpp)
target_link_libraries(sample ${OGRE_LIBRARIES})

当我尝试运行它时,编译是可以的,但是它不能执行它:

代码语言:javascript
复制
/Users/diego/CLionProjects/ogre/sample/cmake-build-debug/sample
dyld: Library not loaded: @executable_path/../Frameworks/OgreBites.framework/Versions/1.11.5/OgreBites
  Referenced from: /Users/diego/CLionProjects/ogre/sample/cmake-build-debug/sample
  Reason: image not found

Process finished with exit code 6

我看过otool -l /opt/Ogre3D/ogre-1.11.5/build/lib/macosx/OgreBites.framework/Versions/1.11.5/OgreBites,有一个名为@executable_path/../Frameworks/OgreBites.framework/Versions/1.11.5/OgreBites的命令LC_ID_DYLIB,它与运行时错误中给出的路径相匹配。但是,我不知道现在该采取哪一步,因为我对macOS上的本机库解析没有多少经验。

更新:

执行命令install_name_tool使链接器找到这个库,但是它在下一个库中失败。我想/希望CMake中有一个选项将它传递给编译器,这样在Ogre编译期间创建的二进制文件就不会使用@execute_path指令了?

EN

回答 1

Stack Overflow用户

发布于 2021-09-09 06:39:42

我也面临着同样的问题,当我使用clion在macos中构建食人魔时。

我发现cmake-build-debug/bin/SampleBrowser.app/Contents/Frameworks.目录中的符号链接无效

我想这些符号链接应该指向cmake/lib/macosx中的这些框架。因此,我修改了执行ln的文件,以创建这些符号链接。

在文件示例/Browser/CMakeLists.txt中,更改

代码语言:javascript
复制
set(OGRE_OSX_BUILD_CONFIGURATION "${CMAKE_OSX_SYSROOT}/$(CONFIGURATION)")

转到

代码语言:javascript
复制
set(OGRE_OSX_BUILD_CONFIGURATION "macosx")

清理和重建,然后问题就会消失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55388144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档