Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在OSX上运行Allegro 5时未找到主功能_C++_Macos_Allegro_Allegro5 - Fatal编程技术网

C++ 在OSX上运行Allegro 5时未找到主功能

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

我试图得到一个在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/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)