Перейти к содержанию
    

Портировать Pawn на малинку

1 hour ago, jenya7 said:

а как теперь *.so  в проект включить в Qt?

Про QT не знаю.

В CMake

target_link_libraries( project_name /full_path_to_so_file )
  

 В gcc -l/full_path_to_so  (маленькая L)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, VladimirG said:

Про QT не знаю.

В CMake


target_link_libraries( project_name /full_path_to_so_file )
  

 В gcc -l/full_path_to_so  (маленькая L)

я подключил

INCLUDEPATH += /home/pi/pawn/build

но проект не видит ни  хедер файлы ни объекты.

void PawnSetup()

{

    AMX amx;

}

ругается на AMX .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

amx.h находится в папке pawn/amx

Нужно её добавлять в инклюд

и включать заголовочный файл #include <amx.h>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 minutes ago, VladimirG said:

amx.h находится в папке pawn/amx

Нужно её добавлять в инклюд

и включать заголовочный файл #include <amx.h>

 

ну так да. видит.

INCLUDEPATH += /home/pi/pawn/amx

а зачем мне тогда so файлы?

обычно я подключаю в Qt так

LIBS+= -l???

только не понимаю что в данном случае  library для меня.

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

10 minutes ago, jenya7 said:

ну так да. видит. а зачем мне тогда so файлы?

Вот это уже очень странный вопрос =\

 

Заголовочный файл, он как оглавление в книге, вы же не сможете прочитать книгу имея только оглавление...

Изменено пользователем VladimirG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, VladimirG said:

 

Вот это уже очень странный вопрос =\

в папке amx все сорсы. так что компилятор берет только хедеры и не билдит сорсы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/17/2022 at 11:29 AM, jenya7 said:

с Линуксом сложней, в папке amx просто огроменная куча файлов.

Врнулись к началу.

10 minutes ago, jenya7 said:

берет только хедеры и не билдит сорсы?

Да, сам компилятор возьмет только хедеры, и то в том случае если включить папку с хедерами в пути поиска. INCLUDEPATH

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, VladimirG said:

Врнулись к началу.

Да, сам компилятор возьмет только хедеры, и то в том случае если включить папку с хедерами в пути поиска. INCLUDEPATH

 

я понял. тут вот какя проблема. при инициализации

int PawnSetup(char *file)
{
    extern AMX_NATIVE_INFO console_Natives[];
    extern AMX_NATIVE_INFO core_Natives[];
    AMX amx;
    cell ret = 0;
    int err;

    err = aux_LoadProgram(&amx, file, NULL);
    if (err != AMX_ERR_NONE)
    ErrorExit(&amx, err);
    amx_Register(&amx, console_Natives, -1);
    err = amx_Register(&amx, core_Natives, -1);
    if (err)
        ErrorExit(&amx, err);
    err = amx_Exec(&amx, &ret, AMX_EXEC_MAIN);
    if (err)
        ErrorExit(&amx, err);
  
    printf("%s returns %ld\n", argv[1], (long)ret);
  
    aux_FreeProgram(&amx);
  
    return 0;
}

на aux_LoadProgram получаю undefined reference. aux_LoadProgram  не включена в библиотеку.

добавляю прямо в проект amxaux.c и amxaux.h получаю

error: No rule to make target 'Pawn/amx.c', needed by 'amx.o'.

error: sclinux.h: No such file or directory  #include <sclinux.h>

можно как то сбидлить amxaux.c и amxaux.h? включть в библиотеку?

 

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю есть 2 пути.

1 создать самому so библиотеку. В папке pawn/amx

gcc amx.c amxcore.c amxcons.c amxaux.c ../linux/getch.c -ldl -I../linux -c -fPIC
gcc -shared -o aux.so  *.o -ldl

2 руками указать в проекте пути к файлам amx.c, amxcore.c, amxcons.c ,amxaux.c

включить в INCLUDEPATH папку pawn/linux

 

В pawn_implementation_guide стр 78 есть описание сборки 

И еще в ней же на странице 7 упоминание о переменной окружения AMXLIB для указания метса скомпиленных библиотек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, VladimirG said:

Думаю есть 2 пути.

1 создать самому so библиотеку. В папке pawn/amx


gcc amx.c amxcore.c amxcons.c amxaux.c ../linux/getch.c -ldl -I../linux -c -fPIC
gcc -shared -o aux.so  *.o -ldl

2 руками указать в проекте пути к файлам amx.c, amxcore.c, amxcons.c ,amxaux.c

включить в INCLUDEPATH папку pawn/linux

 

В pawn_implementation_guide стр 78 есть описание сборки 

И еще в ней же на странице 7 упоминание о переменной окружения AMXLIB для указания метса скомпиленных библиотек.

я включил

INCLUDEPATH += /home/pi/pawn/amx

INCLUDEPATH += /home/pi/pawn/build

INCLUDEPATH += /home/pi/pawn/linux

но получаю

No rule to make target 'Pawn/amx.c' needed by amx.o.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты


 
 SOURCES += \ 
   amx.c amxcore.c amxcons.c amxaux.c ../linux/getch.c

С полными путями относительно проекта QT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

43 minutes ago, VladimirG said:


 

 SOURCES += \ 
   amx.c amxcore.c amxcons.c amxaux.c ../linux/getch.c

С полными путями относительно проекта QT

тогда так

 SOURCES += /home/pi/pawn/amx/amx.c

 SOURCES += /home/pi/pawn/amx/amxcore.c

 SOURCES += /home/pi/pawn/amx/amxcons.c

 SOURCES += /home/pi/pawn/amx/amxaux.c

SOURCES += /home/pi/pawn/linux/getch.c

потому что все сорсы там

только та же ошибка генерируется

 

блииин... я извиняюсь. pro файл не обновляется на Clean и там осталась старая папка Pawn в которой я пытался компилировать сорсы. я её стер из pro и теперь получаю

in function PawnSetup

undefined reference to amx_Exec

хотя #include <amx.h>  проект видит и Goto Reference отсылает меня на эту функцию в заголовочном файле.

 

а если включить сорсы с  SOURCES +=  то вываливаются те же ошибки которые были когда я пытался компилировать сорсы в проекте.

 

 

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда советую попробовать первый путь, собрать библиотеку и её подключать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/28/2022 at 9:25 AM, VladimirG said:

Тогда советую попробовать первый путь, собрать библиотеку и её подключать.

 

я вот что не понимаю.

в build сгенерировались все so файлы. но amx.c и amx.h не включены в мэйк файл и amx.so не сгенерировался. не мудрено что он ругается

undefined reference to amx_Exec

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видимо у авторов была на то причина. В любом случае, библиотека собирается на раз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...