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