我正在尝试编译一个使用的项目sfml
我安装了sfml 2.1
通过homebrew
像下面这样
unknown542696d2a12b:keeperrl kevzettler$ brew list sfml
/usr/local/Cellar/sfml/2.1/Frameworks/freetype.framework/ (3 files)
/usr/local/Cellar/sfml/2.1/Frameworks/sndfile.framework/ (3 files)
/usr/local/Cellar/sfml/2.1/include/SFML/ (87 files)
/usr/local/Cellar/sfml/2.1/lib/libsfml-audio.2.1.dylib
/usr/local/Cellar/sfml/2.1/lib/libsfml-graphics.2.1.dylib
/usr/local/Cellar/sfml/2.1/lib/libsfml-network.2.1.dylib
/usr/local/Cellar/sfml/2.1/lib/libsfml-system.2.1.dylib
/usr/local/Cellar/sfml/2.1/lib/libsfml-window.2.1.dylib
/usr/local/Cellar/sfml/2.1/lib/ (10 other files)
/usr/local/Cellar/sfml/2.1/share/SFML/ (3 files)
该项目编译正常,但是当我尝试运行它时出现错误:
unknown542696d2a12b:keeperrl kevzettler$ ./keeper
dyld: Library not loaded: @executable_path/../Frameworks/freetype.framework/Versions/A/freetype
Referenced from: /usr/local/lib/libsfml-graphics.2.dylib
Reason: image not found
Trace/BPT trap: 5
看起来 dyld 正在尝试加载不同版本的sfml
。比安装的那个homebrew
我怀疑这是 OSX 的某些系统默认设置。
编译命令如下所示:
/usr/local/Cellar/gcc49/4.9.0/bin/gcc-4.9 -Wall -std=c++0x -lstdc++ -ftemplate-depth=1024 -Wno-sign-compare -Wno-unused-variable \
-I. -I./extern -I/usr/local/Cellar/boost/1.55.0/include/boost/ -I/usr/local/Cellar/boost/1.55.0/lib -I/usr/local/Cellar/sfml/2.1/include/SFML/ -I/usr/local/Cellar/sfml/2.1/lib/ -static-libstdc++ -g -O3 -o keeper \
obj-opt/time_queue.o obj-opt/level.o obj-opt/model.o obj-opt/square.o obj-opt/util.o obj-opt/monster.o obj-opt/square_factory.o obj-opt/view.o obj-opt/creature.o obj-opt/message_buffer.o obj-opt/item_factory.o obj-opt/item.o obj-opt/inventory.o obj-opt/debug.o obj-opt/player.o obj-opt/window_view.o obj-opt/field_of_view.o obj-opt/view_object.o obj-opt/creature_factory.o obj-opt/quest.o obj-opt/shortest_path.o obj-opt/effect.o obj-opt/equipment.o obj-opt/level_maker.o obj-opt/monster_ai.o obj-opt/attack.o obj-opt/tribe.o obj-opt/name_generator.o obj-opt/event.o obj-opt/location.o obj-opt/skill.o obj-opt/fire.o obj-opt/ranged_weapon.o obj-opt/map_layout.o obj-opt/trigger.o obj-opt/map_memory.o obj-opt/view_index.o obj-opt/pantheon.o obj-opt/enemy_check.o obj-opt/collective.o obj-opt/task.o obj-opt/markov_chain.o obj-opt/controller.o obj-opt/village_control.o obj-opt/poison_gas.o obj-opt/minion_equipment.o obj-opt/statistics.o obj-opt/options.o obj-opt/renderer.o obj-opt/tile.o obj-opt/map_gui.o obj-opt/gui_elem.o obj-opt/item_attributes.o obj-opt/creature_attributes.o obj-opt/serialization.o obj-opt/unique_entity.o obj-opt/entity_set.o obj-opt/gender.o obj-opt/main.o obj-opt/gzstream.o obj-opt/singleton.o obj-opt/technology.o obj-opt/encyclopedia.o obj-opt/creature_view.o obj-opt/input_queue.o obj-opt/user_input.o obj-opt/window_renderer.o obj-opt/texture_renderer.o obj-opt/minimap_gui.o obj-opt/music.o obj-opt/test.o obj-opt/sectors.o obj-opt/vision.o \
-lsfml-graphics -lsfml-audio -lsfml-window -lsfml-system -lboost_serialization -lz -L/usr/local/Cellar
我试过指定-I
and -L
标志指向2.1
library
-I/usr/local/Cellar/sfml/2.1/include/SFML/ -I/usr/local/Cellar/sfml/2.1/lib/ -L/usr/local/Cellar
为什么 SFML 公式不能开箱即用?
SFML 的构建是为了使用 freetype 和 libsndfile 框架/Library/Frameworks
或从Frameworks
文件夹在你的应用程序包 https://developer.apple.com/library/mac/documentation/corefoundation/conceptual/cfbundles/BundleTypes/BundleTypes.html.
您可以找到更多技术细节here https://github.com/Homebrew/homebrew/pull/26091 and there https://github.com/LaurentGomila/SFML/issues/620.
如何在 Mac 上轻松使用 SFML?
这真的很简单:遵循 1:1official guide: SFML 和 Xcode (Mac OS X) http://www.sfml-dev.org/tutorials/2.1/start-osx.php(是的,您可以在 Xcode 之外使用 SFML!)
我真的很想使用酿造配方。我该如何修复它?
首先,好好看看这个问题 https://github.com/LaurentGomila/SFML/issues/620。这将使您对当前简单公式的问题有一个概述。
特别是对于您当前的问题,您将需要使用install_name_tool http://www.manpagez.com/man/1/install_name_tool/修复你的二进制文件。
以下是如何使用 freetype 来完成此操作。 libsndfile 也类似。
install_name_tool -change @executable_path/../Frameworks/freetype.framework/Versions/A/freetype /usr/local/lib/libfreetype.dylib /usr/local/Cellar/sfml/2.1/lib/libsfml-graphics.2.1.dylib
However,这意味着您的应用程序将在中查找 freetype/usr/local/lib
。因此,您也必须在客户的计算机上安装 freetype。如果您使用官方安装流程 http://www.sfml-dev.org/tutorials/2.1/start-osx.php并使用 Xcode 模板创建 SFML 应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)