C++ 在OSX上运行Allegro 5时未找到主功能
我试图得到一个在OSX上运行Allegro的最小示例 我使用自制软件安装了稳定版Allegro 5.2 这是我的代码(C++ 在OSX上运行Allegro 5时未找到主功能,c++,macos,allegro,allegro5,C++,Macos,Allegro,Allegro5,我试图得到一个在OSX上运行Allegro的最小示例 我使用自制软件安装了稳定版Allegro 5.2 这是我的代码(allegro.hpp): 下面是我收到的错误: dyld: Symbol not found: __al_mangled_main Referenced from: /usr/local/opt/allegro/lib/liballegro_main.5.2.dylib Expected in: flat namespace in /usr/local/opt/all
allegro.hpp
):
下面是我收到的错误:
dyld: Symbol not found: __al_mangled_main
Referenced from: /usr/local/opt/allegro/lib/liballegro_main.5.2.dylib
Expected in: flat namespace
in /usr/local/opt/allegro/lib/liballegro_main.5.2.dylib
Trace/BPT trap: 5
我已经尝试过其他地方给出的解决方案:
intmain(intargc,char**argv)
liballegro\u main.dylib
您将其命名为
allegro.hpp
,尽管它是源文件,而不是头文件
将其重命名为
something.cpp
或something.cc
假设您按照建议将文件重命名为allegro.cpp,则这将是构建过程,使用make
obj = allegro
CPPFLAGS += -I/usr/local/include
LDFLAGS += -L/usr/local/lib
LDLIBS += -lallegro
LDLIBS += -lallegro_main
.PHONY: all
all : $(obj)
allegro: allegro.cpp
如果您想使用cmake 这会让你走的
cmake_minimum_required(VERSION 3.17)
project(hi)
set(CMAKE_CXX_STANDARD 14)
# These are where the include files should be
include_directories(/usr/local/include)
# add extra lib directories
link_directories(/usr/local/lib)
add_executable(hi audio2.cpp)
# specify the dependency on an extra library
target_link_libraries(hi allegro allegro_main allegro_acodec allegro_audio)
谢谢,成功了!为什么会有不同?编译过程是否因不同的文件扩展名而改变?是和否。编译过程因不同的文件类型而改变。文件类型通常由文件扩展名决定。我想你可以告诉我什么是头文件,什么是源文件,但我从来没有这样做过,你也不应该这样做。这就是扩展的用途。编译头文件时,您要做的是创建头文件,而不是创建可执行文件。如果不添加
-o
开关,您通常会看到类似于allegro.hpp.gch
或allegro.pch
或类似的文件。
obj = allegro
CPPFLAGS += -I/usr/local/include
LDFLAGS += -L/usr/local/lib
LDLIBS += -lallegro
LDLIBS += -lallegro_main
.PHONY: all
all : $(obj)
allegro: allegro.cpp
cmake_minimum_required(VERSION 3.17)
project(hi)
set(CMAKE_CXX_STANDARD 14)
# These are where the include files should be
include_directories(/usr/local/include)
# add extra lib directories
link_directories(/usr/local/lib)
add_executable(hi audio2.cpp)
# specify the dependency on an extra library
target_link_libraries(hi allegro allegro_main allegro_acodec allegro_audio)