PDA

Просмотр полной версии : [Вопрос] Plugin does not conform to architecture



vovandolg
06.11.2016, 21:32
Попробовал с нуля чистый плагин слепить на основе других и выбило в server_log


[20:20:04] Loading plugin: vd_funcs
[20:20:04] Plugin does not conform to architecture.
[20:20:04] Failed.


Вот и сам ужасный код:


#include "SDK/amxplugin.cpp"
#include "SDK/amx/amx.h"
#include "SDK/plugin.h"

#define PLUGIN_VERSION "0.1"

typedef void (*logprintf_t)(char* format, ...);

logprintf_t logprintf;

void **ppPluginData;

extern void *pAMXFunctions;


class amxNatives
{

public:

static const AMX_NATIVE_INFO vdNatives[];

static cell AMX_NATIVE_CALL InitVD(AMX *amx, cell *params);
};

const AMX_NATIVE_INFO amxNatives::vdNatives[] =
{
{"InitVD", amxNatives::InitVD },
{0, 0}
};

cell AMX_NATIVE_CALL amxNatives::InitVD(AMX *amx, cell *params)
{
logprintf("Function start!");
return 1;
}

PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports()
{
return (SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES);
}


PLUGIN_EXPORT int PLUGIN_CALL Load(void **ppData)
{
pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];

logprintf("vd_funcs v%s by vovandolg loaded", PLUGIN_VERSION);
return 1;
}


PLUGIN_EXPORT void PLUGIN_CALL Unload()
{
logprintf("vd_funcs v%s by vovandolg unloaded", PLUGIN_VERSION);
}


PLUGIN_EXPORT int PLUGIN_CALL AmxLoad(AMX *amx)
{
return amx_Register(amx, amxNatives::vdNatives, -1);
}

PLUGIN_EXPORT int PLUGIN_CALL AmxUnload(AMX *amx)
{
return AMX_ERR_NONE;
}


Что тут в структуре не хватает или не верно, на что так ругается сервер?

Daniel_Cortez
06.11.2016, 21:46
Убедись, что компилируешь плагин под 32-разрядную архитектуру.
Также всему виной может быть устаревшая версия SDK.

vovandolg
06.11.2016, 21:51
С этими двумя всё вроде норм, а что за файл .def нужен, я на оф форуме смотрел проблема именно в отсутствие этого файла, где его создавать в VS?

Daniel_Cortez
06.11.2016, 21:58
С этими двумя всё вроде норм, а что за файл .def нужен, я на оф форуме смотрел проблема именно в отсутствие этого файла, где его создавать в VS?
Обычно он создаётся не в VS, а вручную, а затем используется в настройках проекта (Свойства конфигурации --> Компоновщик --> Ввод --> Файл определения модуля).
Чтобы не тратить время на создание нового файла, можешь взять этот: https://github.com/Daniel-Cortez/DC_CMD/blob/master/DC_CMD/main.def

vovandolg
06.11.2016, 22:11
Всё благодарочка) решилось.