Собственно, я так и не понял, как совместить между собой этот шаблон и sampgdk. Я бы давно использовал sampgdk, но там, почему-то, не работает перехват кастомных нативных функций. Я много у кого об этом спрашивал, и получал один и тот же ответ, сделать примерно вот так:
PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports() { return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES; }
Но увы, это не работало, и при запуске мода с использованием кастомной функции я получал это уведомление.
В шаблоне это работает, но в нём нельзя делать то, что можно в sampgdk. К примеру использование коллбэков и нативных функций так, как тебе будет нужно.
execution (22.11.2020)
Проблема решена.
В файл main.def нужно добавить
AmxLoad и AmxUnload, ошибки тогда не будет, но консоль просто будет закрываться. Для решения использовать этот код:
extern void *pAMXFunctions; void *(*logprintf)(const char *fmt, ...); PLUGIN_EXPORT bool PLUGIN_CALL Load(void **ppData) { pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS]; logprintf = (void *(*)(const char *fmt, ...))ppData[PLUGIN_DATA_LOGPRINTF]; if (NULL == pAMXFunctions || NULL == logprintf) return false; return sampgdk::Load(ppData); }
Последний раз редактировалось oukibt; 27.11.2020 в 06:06.
20th century (24.11.2020)
Наверное, уже несколько неактуально, но все же спрошу. Подскажите, пожалуйста, в чем может быть проблема, если сама библиотека успешно собирается, но подключить ее к серверу не удается (в логах сервера пишет, что плагин не загружен).
До этого я создал новый проект в своей IDE (shared library), куда импортировал все файлы, предложенные автором, @Daniel_Cortez. Ну, и скомпилировал, предварительно задав компилятор i686-w64-mingw32 и выставив тип сборки Release (хотя и с Debug пробовал).
Ах, да, запускаю на сервере CR 0.3.7. Но, насколько помню, это допустимо, поскольку адреса функций у CR 0.3.7 и SA совпадают.
Последний раз редактировалось Greenkey; 07.06.2021 в 01:04.
Что за странная мода выдумывать что-то с созданием проекта через IDE, а потом удивляться, почему плагин не работает? В 1-м посте написано, как нужно генерировать проект с помощью CMake. Попробуйте собрать так, как сказано там, и проверьте загрузку собранного плагина сначала на сервере SA-MP, а затем на CR-MP - в таком порядке хотя бы будет понятно, в чём примерно проблема.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Тогда помочь могу мало чем, ибо шаблон тестировался только с генерацией проекта из CMake. Создание напрямую из других IDE в теории возможно, но не гарантируется из-за кривизны реализации генерации проектов из CMakeLists в самих IDE.
В любом случае, попробуйте сначала подключить плагин к серверу SA-MP.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Greenkey (10.06.2021)
В один момент задумался: возможно ли использовать компилятор Microsoft Visual Studio в CLion (коль уж с этим компилятором получается вполне рабочая библиотека). После недолгих поисков узнал, что сделать это проще простого. Собрав проект в CLion с использованием компилятора Microsoft Visual Studio, я наконец-то получил рабочую dll-библиотеку.
Правда... Это несколько смешно: иметь Microsoft Visual Studio, но использовать CLion и компилятор MSVC. Уж больно люблю я JetBrains. А Visual Studio крайне удобна для десктопных приложений.
В любом случае большое Вам спасибо за потраченное на меня время. Будьте здоровы.
Последний раз редактировалось Greenkey; 11.06.2021 в 13:32.
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)