Проблема актуальна. Тысячу раз выводится сообщение.
Проверил по очереди отключать другие плагины, обнаружил, что это из-за sscanf
Вид для печати
Собственно, я так и не понял, как совместить между собой этот шаблон и sampgdk. Я бы давно использовал sampgdk, но там, почему-то, не работает перехват кастомных нативных функций. Я много у кого об этом спрашивал, и получал один и тот же ответ, сделать примерно вот так:
PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports() { return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES; }
Но увы, это не работало, и при запуске мода с использованием кастомной функции я получал это уведомление.
В шаблоне это работает, но в нём нельзя делать то, что можно в sampgdk. К примеру использование коллбэков и нативных функций так, как тебе будет нужно.
Проблема решена.
В файл 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); }
Наверное, уже несколько неактуально, но все же спрошу. Подскажите, пожалуйста, в чем может быть проблема, если сама библиотека успешно собирается, но подключить ее к серверу не удается (в логах сервера пишет, что плагин не загружен).
До этого я создал новый проект в своей IDE (shared library), куда импортировал все файлы, предложенные автором, @Daniel_Cortez. Ну, и скомпилировал, предварительно задав компилятор i686-w64-mingw32 и выставив тип сборки Release (хотя и с Debug пробовал).
Ах, да, запускаю на сервере CR 0.3.7. Но, насколько помню, это допустимо, поскольку адреса функций у CR 0.3.7 и SA совпадают.
Что за странная мода выдумывать что-то с созданием проекта через IDE, а потом удивляться, почему плагин не работает? В 1-м посте написано, как нужно генерировать проект с помощью CMake. Попробуйте собрать так, как сказано там, и проверьте загрузку собранного плагина сначала на сервере SA-MP, а затем на CR-MP - в таком порядке хотя бы будет понятно, в чём примерно проблема.
Тогда помочь могу мало чем, ибо шаблон тестировался только с генерацией проекта из CMake. Создание напрямую из других IDE в теории возможно, но не гарантируется из-за кривизны реализации генерации проектов из CMakeLists в самих IDE.
В любом случае, попробуйте сначала подключить плагин к серверу SA-MP.
В один момент задумался: возможно ли использовать компилятор Microsoft Visual Studio в CLion (коль уж с этим компилятором получается вполне рабочая библиотека). После недолгих поисков узнал, что сделать это проще простого. Собрав проект в CLion с использованием компилятора Microsoft Visual Studio, я наконец-то получил рабочую dll-библиотеку.
Правда... Это несколько смешно: иметь Microsoft Visual Studio, но использовать CLion и компилятор MSVC. Уж больно люблю я JetBrains. А Visual Studio крайне удобна для десктопных приложений.
В любом случае большое Вам спасибо за потраченное на меня время. Будьте здоровы.