VladimirG 0 27 января, 2022 Опубликовано 27 января, 2022 · Жалоба 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) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 27 января, 2022 Опубликовано 27 января, 2022 · Жалоба 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 . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirG 0 27 января, 2022 Опубликовано 27 января, 2022 · Жалоба amx.h находится в папке pawn/amx Нужно её добавлять в инклюд и включать заголовочный файл #include <amx.h> Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 27 января, 2022 Опубликовано 27 января, 2022 (изменено) · Жалоба 25 minutes ago, VladimirG said: amx.h находится в папке pawn/amx Нужно её добавлять в инклюд и включать заголовочный файл #include <amx.h> ну так да. видит. INCLUDEPATH += /home/pi/pawn/amx а зачем мне тогда so файлы? обычно я подключаю в Qt так LIBS+= -l??? только не понимаю что в данном случае library для меня. Изменено 27 января, 2022 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirG 0 27 января, 2022 Опубликовано 27 января, 2022 (изменено) · Жалоба 10 minutes ago, jenya7 said: ну так да. видит. а зачем мне тогда so файлы? Вот это уже очень странный вопрос =\ Заголовочный файл, он как оглавление в книге, вы же не сможете прочитать книгу имея только оглавление... Изменено 27 января, 2022 пользователем VladimirG Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 27 января, 2022 Опубликовано 27 января, 2022 · Жалоба 1 minute ago, VladimirG said: Вот это уже очень странный вопрос =\ в папке amx все сорсы. так что компилятор берет только хедеры и не билдит сорсы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirG 0 27 января, 2022 Опубликовано 27 января, 2022 · Жалоба On 1/17/2022 at 11:29 AM, jenya7 said: с Линуксом сложней, в папке amx просто огроменная куча файлов. Врнулись к началу. 10 minutes ago, jenya7 said: берет только хедеры и не билдит сорсы? Да, сам компилятор возьмет только хедеры, и то в том случае если включить папку с хедерами в пути поиска. INCLUDEPATH Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 27 января, 2022 Опубликовано 27 января, 2022 (изменено) · Жалоба 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? включть в библиотеку? Изменено 27 января, 2022 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirG 0 27 января, 2022 Опубликовано 27 января, 2022 · Жалоба Думаю есть 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 для указания метса скомпиленных библиотек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 27 января, 2022 Опубликовано 27 января, 2022 · Жалоба 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirG 0 27 января, 2022 Опубликовано 27 января, 2022 · Жалоба SOURCES += \ amx.c amxcore.c amxcons.c amxaux.c ../linux/getch.c С полными путями относительно проекта QT Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 27 января, 2022 Опубликовано 27 января, 2022 (изменено) · Жалоба 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 += то вываливаются те же ошибки которые были когда я пытался компилировать сорсы в проекте. Изменено 27 января, 2022 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirG 0 28 января, 2022 Опубликовано 28 января, 2022 · Жалоба Тогда советую попробовать первый путь, собрать библиотеку и её подключать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 30 января, 2022 Опубликовано 30 января, 2022 · Жалоба On 1/28/2022 at 9:25 AM, VladimirG said: Тогда советую попробовать первый путь, собрать библиотеку и её подключать. я вот что не понимаю. в build сгенерировались все so файлы. но amx.c и amx.h не включены в мэйк файл и amx.so не сгенерировался. не мудрено что он ругается undefined reference to amx_Exec Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirG 0 31 января, 2022 Опубликовано 31 января, 2022 · Жалоба Видимо у авторов была на то причина. В любом случае, библиотека собирается на раз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться