сделать mosquitto-auth-plug на окнах

В настоящее время я пытаюсь создать плагин mosquitto-auth-plugin для Windows, но я не уверен, какой процесс make использовать. В документе говорится, что нужно отредактировать файл config.mk, который я сделал, а затем «сделать» auth-plug — это то место, где я был поражен, я пытался сделать это с помощью GnWin и MinGW, но ни один из них не работал, есть ли способ построить библиотеку в Windows или я могу сделать ее в Linux и скопировать auth-plug.o на мою машину с Windows?


person dvn    schedule 04.08.2015    source источник


Ответы (2)


Я не знаю, чтобы кто-нибудь пытался собрать mosquitto-auth-plug в Windows, и я был бы очень удивлен, если бы это вообще сработало; как автор плагина, я не обратил внимания на переносимость за пределы Un*x, и чтобы не обнадеживать, не буду. :-)

Тем не менее, вы не можете запускать (загружать) общие объекты, созданные на Linux, в Windows. Что может быть возможно, но прошли годы с тех пор, как я делал что-то подобное, так это перекрестная компиляция с соответствующим набором инструментов.

person jpmens    schedule 04.08.2015
comment
спасибо за ответ - но просто для ясности, могу ли я использовать этот плагин, если мой брокер mosquitto работает на машине с Windows? - person dvn; 04.08.2015
comment
Короткий ответ: никто никогда не пытался использовать плагин в Windows. Таким образом, я бы сказал, что в настоящее время вы не можете использовать его, если хотите запустить своего брокера в Windows. - person hardillb; 04.08.2015
comment
Ответ, в настоящее время, является окончательным Нет, вы не можете использовать плагин на своем брокере Mosquitto в Windows, как говорит @hardlib. Единственная альтернатива, которую я могу придумать, — это запустить Linux на виртуальной машине в Windows и запустить в ней Mosquitto, но это, вероятно, не то, что вам нужно. - person jpmens; 04.08.2015

Я создаю его для Windows, используя только серверные части HTTP и JWT.

Пришлось исправить:

  1. Поместите __declspec(dllexport) в функции mosquitto_auth_Xyz... в auth-plug.c.
  2. Добавлен альтернативный код для fnmatch(a,b) и strsep() в auth-plug.c, см. ниже.
  3. В log.c я вернулся к использованию log=__log вместо log=mosquitto_log_printf, поскольку мне не удалось импортировать функцию из libmosquitto.
  4. Скомпилировано с использованием Visual Studio 2017 Express с установленными определениями препроцессора _CRT_NONSTDC_NO_DEPRECATE и _CRT_SECURE_NO_WARNINGS.

Код работает нормально!

Для fnmatch(a,b) и strsep() в auth-plug.c измените #include на:

#ifdef _WIN32
#include <windows.h>
#include <shlwapi.h>
#define fnmatch(a, b, c) PathMatchSpecA(a, b)
extern char* strsep(char** stringp, const char* delim)
{
    char* start = *stringp;
    char* p;

    p = (start != NULL) ? strpbrk(start, delim) : NULL;

    if (p == NULL)
    {
        *stringp = NULL;
    }
    else
    {
        *p = '\0';
        *stringp = p + 1;
    }

    return start;
}
#else
#include <fnmatch.h>
#endif
person user9568167    schedule 29.03.2018