Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 7 из 7
  1. #1
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±

    Ошибки или мои косяки Pawn + C++

    Была ошибка в amx.h
    Код:
    typedef short int           int16_t;
      typedef unsigned short int  uint16_t;
    Исправил добавив в начало

    Код:
    #define HAVE_STDINT_H
    Потом был краш, который я исправил заменив в
    Код:
    #define AMXAPI __cdecl
    на
    Код:
    #define AMXAPI _stdcall
    Но теперь функции amxfloat.c и amxcore.c не хотят регаться.

    Код:
    if (aux_LoadProgram(&amx, "data/script/test.amx", NULL) != AMX_ERR_NONE) 
    		return 0;
    
    	if (amx_CoreInit(&amx) != AMX_ERR_NONE) // core - тоже не хотят
    		return -1;
    
    	if (amx_FloatInit(&amx) != AMX_ERR_NONE) // и это тоже не хочет
    		return -2;
    
    	if (amx_Register(&amx, mNatives, -1) != AMX_ERR_NONE) // мои функции нормально регаются
    		return -3;
    В Pawn все подключено.

    Код:
    #include <core>
    #include <float>
    
    native SetCameraPos(Float:x, Float:y, Float:z, Float:x_at, Float:y_at, Float:z_at);
    
    main()
    {
    	return 0;
    }
    
    @GameEngineInit();
    @GameEngineInit()
    {
    	SetCameraPos(10.0, 10.0, 10.0, 0.0, 0.0, 100.0);
    }
    В чем проблема?
    Последний раз редактировалось KrutoyKrosch; 11.11.2017 в 11:16.

  2. #2
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±
    Какое-то странное решение проблемы нашел... Поменять местами регистрацию функций... Вроде работает

    пока не закрывайте, может еще накосячу где
    Последний раз редактировалось KrutoyKrosch; 11.11.2017 в 12:18.

  3. #3
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Вместо того, чтобы городить костыли, освойте CMake (он вам в любом случае пригодитя, если вы хотите, чтобы игровой движок был мультиплатформенным) и используйте Pawn 3.2 (+) - этот форк был создан специально для того, чтобы упростить задачу по встраиванию интерпретатора в приложения.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  4. #4
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Вместо того, чтобы городить костыли, освойте CMake (он вам в любом случае пригодитя, если вы хотите, чтобы игровой движок был мультиплатформенным) и используйте Pawn 3.2 (+) - этот форк был создан специально для того, чтобы упростить задачу по встраиванию интерпретатора в приложения.
    А что делает CMake? Что дает на выходе? Просто я пытался сделать все как написано в документации на оф сайте Pawn, но чет ошибок много было и разбираться не хотелось.

    И в чем костыльность кода который сейчас?

  5. #5
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от KrutoyKrosch Посмотреть сообщение
    А что делает CMake? Что дает на выходе? Просто я пытался сделать все как написано в документации на оф сайте Pawn, но чет ошибок много было и разбираться не хотелось.
    https://ru.wikipedia.org/wiki/CMake
    + ещё кучу уроков (в т.ч. на русском языке) можно найти, воспользовавшись гуглом.


    Цитата Сообщение от KrutoyKrosch Посмотреть сообщение
    И в чем костыльность кода который сейчас?
    В том, что для одной лишь компиляции вам приходится лезть в чужой код?
    Цитата Сообщение от KrutoyKrosch Посмотреть сообщение
    Исправил добавив в начало

    Код:
    #define HAVE_STDINT_H
    Потом был краш, который я исправил заменив в
    Код:
    #define AMXAPI __cdecl
    на
    Код:
    #define AMXAPI _stdcall
    Если для вас это не костыль, то я не знаю...
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. #6
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±
    Ну про этот костыль написано даже на оф сайте Pawn. Где создатель пишет что если что-то не работает замените на _stdcall, правда я не сразу это заметил. А #define HAVE_STDINT_H пришлось добавить из-за его каких-то странных проверок на компилятор...

  7. #7
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от KrutoyKrosch Посмотреть сообщение
    Ну про этот костыль написано даже на оф сайте Pawn. Где создатель пишет что если что-то не работает замените на _stdcall, правда я не сразу это заметил.
    Если вы про этот текст, то там ни слова о редактировании исходников, а сказано, что нужно либо объявлять макросы AMX_NATIVE_CALL и AMXAPI в своём коде до подключения amx.h, либо добавлять их в аргументы командной строки для компилятора (именно это и делает CMake в моём форке, ссылка на который указана в посте выше).


    Цитата Сообщение от KrutoyKrosch Посмотреть сообщение
    А #define HAVE_STDINT_H пришлось добавить из-за его каких-то странных проверок на компилятор...
    Чего тоже не пришлось бы делать, умей вы пользоваться CMake.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •