приложение, созданное с помощью bash и c ++, не откроется, не найдено ошибок - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь создать игровой движок, чтобы он работал должным образом, он должен иметь возможность экспортировать файл приложения, созданный на с ++.Я выяснил, как создать bash-файл с помощью g ++, а затем создал make-файл, который преобразует файл c ++ в bash-файл c ++, и был создан с использованием фреймворков sdl2, sdl2_image и sdl2_ttf.файл конвертировался нормально, и когда я запускал его в терминале, он работал нормально, но когда я помещал его в файл приложения, это не удавалось.Файл bash находится в файле MacOS, файл info.plist настроен для запуска файла bash, и все они находятся в файле содержимого, поэтому он должен работать нормально.

вот мой файл Info.plist:

<plist version="1.0">
<dict>
     <key>CFBundleExecutable</key>
     <string>nonecopy</string>
     <key>CFBundleIdentifier</key>
     <string>none.none</string>
     <key>CFBundleName</key>
     <string>none</string>
     <key>CFBundlePackageType</key>
     <string>APPL</string>
     <key>CFBundleShortVersionString</key>
     <string>1.0</string>
     <key>CFBundleVersion</key>
     <string>1</string>
     <key>CFBundleSignature</key>
     <string>????</string>
</dict>
</plist>

Файл Info.plist находится в содержании.Папка Contents находится в файле приложения.

Файл noncopy, который запускается при открытом приложении, выглядит следующим образом:

#!/bin/bash

DIR="$(cd "$(dirname "$0")" && pwd)"
$DIR/run.sh

exit 0

Исполняемый файл nonecopy находится в файле MacOS, которыйв файле содержимого.Файл run.sh также находится в файле MacOS и является конвертированной версией файла c ++.

Файл run.sh:

œ˙Ì˛����Ä������(��Ö� ��������H���__PAGEZERO��������������������������������������������������������ÿ��__TEXT����������������������������������������������������__text����������__TEXT����������∞�����#������∞���������������Ä������������__stubs���������__TEXT����������‘�����<�������‘��������������Ä�����������__stub_helper���__TEXT���������������t����������������������Ä������������__cstring�������__TEXT����������Ñ�����%�������Ñ�����������������������������__unwind_info���__TEXT����������¨�����H�������¨��������������������������������8��__DATA��������������������������������������������������__nl_symbol_ptr�__DATA����������������������������������������
�����������__got�����������__DATA�������������������������������������������������__la_symbol_ptr�__DATA���������������P�����������������������
��������������H���__LINKEDIT������� ������������� ������d��������������������"��Ä0���� ����� ��8�����������@ ��ÿ���!��0���������P!�����å"��ÿ������P������������������������������������������������0"������������������������ ������/usr/lib/dyld�������������w˝[:8ûܯ§¡∆®J#2��� �������
��
��������ô*��������������(��Ä���∞�����������������P��������������/usr/local/opt/sdl2_image/lib/libSDL2_image-2.0.0.dylib����P���������������/usr/local/opt/sdl2_ttf/lib/libSDL2_ttf-2.0.0.dylib��������H�����������
���
�/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib��������0���������  ê���/usr/lib/libc++.1.dylib����8���������»‰���/usr/lib/libSystem.B.dylib������&������H!�����)������P!��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������UHâÂHÅφ���∏1Ú��Hã
I��Hã   HâM¯«Eº����â}∏Hâu∞â«Ë��ɯ�çG���Hç=ë��∞�Ë��âEêˉ��Hç=Ñ��Hâ∆∞�˘��Hç=v��âEå∞�ËÊ��«EºˇˇˇˇâEàÈj��Ë∆��ɯ�çJ���Hç=J��∞�˪��âEÑËè��Hç=/��Hâ∆∞�Ë¢��Hç=!��âEÄ∞�Ëë��«EºˇˇˇˇâÖ|ˇˇˇÈ��Hç=   ��1¿πÙ��â∆â¬âçxˇˇˇDãÖxˇˇˇAâ¡Ë(��HâE®HÉ}®�ÖP���Hç=ÿ��∞�Ë;��âÖtˇˇˇË��Hç=¨��Hâ∆∞�Ë��Hç=û��âÖpˇˇˇ∞�Ë��«EºˇˇˇˇâÖlˇˇˇÈå���Hã}®Ë“���æˇˇˇˇ1“âE§Hã}®Ëß���HâEò∆EóˆEóÑ^���È����Hç}¿Ë´���ɯ�ÑB���Å}¿���Ö0���ãE»;E§Ö���∂EÃɯÖ
���Hã}®Ë[���∆Eó�È����È����ȨˇˇˇÈòˇˇˇãEºHã
i��Hã   HãU¯H9—âÖhˇˇˇÖ���ãÖhˇˇˇHц���]√Ë3���êˇ%>��ˇ%@��ˇ%B��ˇ%D��ˇ%F��ˇ%H��ˇ%J��ˇ%L��ˇ%N��ˇ%P��LçÒ���ASˇ%·���êhõ���ÈÊˇˇˇh����È‹ˇˇˇh���È“ˇˇˇh2���È»ˇˇˇhK���Èæˇˇˇh_���È¥ˇˇˇhv���È™ˇˇˇhÜ���Ȇˇˇˇh´���Èñˇˇˇh√���Èåˇˇˇerror 1
�%s�
�error 2
�test�error 3
���������������������������∞��4���4���‘������4�����������������������������������������������������*�����4�����>�����H�����R�����\�����f����� �����p�����z�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������"Z����@___stack_chk_guard�Qrê@dyld_stub_binder�Äˡˇˇˇˇˇˇˇê�r@_SDL_CreateRenderer�ê�r @_SDL_CreateWindow�ê�r(@_SDL_DestroyWindow�ê�r0@_SDL_GetError�ê�r8@_SDL_GetWindowID�ê�r@@_SDL_Init�ê�rH@_SDL_PollEvent�ê�rP@_TTF_Init�ê�rX@___stack_chk_fail�ê�r`@_printf�ê���������_��_mh_execute_header�!main�%����∞�������∞����������������������∞������������������0�������������B�������������U�������������c�������������t�������������~�������������ç�������������ó�������������©�������������º�������������ƒ����������������������������������  ���
������
������@������������������������ ���
������ �__mh_execute_header�_main�_SDL_CreateRenderer�_SDL_CreateWindow�_SDL_DestroyWindow�_SDL_GetError�_SDL_GetWindowID�_SDL_Init�_SDL_PollEvent�_TTF_Init�___stack_chk_fail�___stack_chk_guard�_printf�dyld_stub_binder����

это файл, который компилирует c ++(runc.cpp) в файл run.sh:


brew update
brew install gcc
brew install zeromq
brew install pkgconfig
brew install sdl2
brew install sdl2_image
brew install sdl2_ttf
g++ $(pkg-config --cflags sdl2 sdl2_image sdl2_ttf) -I /Library/Frameworks /Users/mikahshattuck/noneproject/none2019-05-0909-22-14:2:/none.app/Contents/MacOS/runmain.cpp -o /Users/mikahshattuck/noneproject/none2019-05-0909-22-14:2:/none.app/Contents/MacOS/run.cpp $(pkg-config --libs sdl2 sdl2_image sdl2_ttf)
/Users/mikahshattuck/noneproject/none2019-05-0909-22-14:2:/none.app/Contents/MacOS/run.cpp
exit 0

это файл runc.cpp, который преобразуется в bash:

#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>
#include <stdio.h>

int main(int argc, const char * argv[]) {
    if(SDL_Init( SDL_INIT_EVERYTHING ) < 0){
        printf("error 1\n");
        printf("%s", SDL_GetError());
        printf("\n");
        return -1;
    }
    if(TTF_Init() < 0){
        printf("error 2\n");
        printf("%s", TTF_GetError());
        printf("\n");
        return -1;
    }
    SDL_Window* window = SDL_CreateWindow("test", 0, 0, 500, 500, 0);
    if(!window){
        printf("error 3\n");
        printf("%s", SDL_GetError());
        printf("\n");
        return -1;
    }
    int windowid = SDL_GetWindowID(window);
    SDL_Renderer* Renderer = SDL_CreateRenderer(window, -1, 0);
    bool running = true;
    SDL_Event event;
    while(running){
        while(SDL_PollEvent(&event)){
            if(event.type == SDL_WINDOWEVENT){
                if(event.window.windowID == windowid){
                    if(event.window.event == SDL_WINDOWEVENT_CLOSE){
                        SDL_DestroyWindow(window);
                        running = false;
                    }
                }
            }
        }
    }
}

, что все, как я говорил ранее, файлывсе работало нормально в терминале.Я просто не работаю, когда запускаю файл приложения, в котором они все хранятся, но когда я открываю приложение, оно запускается 1-2 секунды и не открывает никакого окна.если я изменю файл info.plist для выполнения скомпилированного файла c ++, он просто удалит файл.

1 Ответ

0 голосов
/ 13 мая 2019

Я понял, мне просто нужно скомпилировать это с g ++ другим способом. Я скомпилировал его в файл .dylib или .out, и он работал нормально.

...