В настоящее время я пытаюсь создать плагин mosquitto-auth-plugin для Windows, но я не уверен, какой процесс make использовать. В документе говорится, что нужно отредактировать файл config.mk, который я сделал, а затем «сделать» auth-plug — это то место, где я был поражен, я пытался сделать это с помощью GnWin и MinGW, но ни один из них не работал, есть ли способ построить библиотеку в Windows или я могу сделать ее в Linux и скопировать auth-plug.o на мою машину с Windows?
сделать mosquitto-auth-plug на окнах
Ответы (2)
Я не знаю, чтобы кто-нибудь пытался собрать mosquitto-auth-plug
в Windows, и я был бы очень удивлен, если бы это вообще сработало; как автор плагина, я не обратил внимания на переносимость за пределы Un*x, и чтобы не обнадеживать, не буду. :-)
Тем не менее, вы не можете запускать (загружать) общие объекты, созданные на Linux, в Windows. Что может быть возможно, но прошли годы с тех пор, как я делал что-то подобное, так это перекрестная компиляция с соответствующим набором инструментов.
person
jpmens
schedule
04.08.2015
спасибо за ответ - но просто для ясности, могу ли я использовать этот плагин, если мой брокер mosquitto работает на машине с Windows?
- person dvn; 04.08.2015
Короткий ответ: никто никогда не пытался использовать плагин в Windows. Таким образом, я бы сказал, что в настоящее время вы не можете использовать его, если хотите запустить своего брокера в Windows.
- person hardillb; 04.08.2015
Ответ, в настоящее время, является окончательным Нет, вы не можете использовать плагин на своем брокере Mosquitto в Windows, как говорит @hardlib. Единственная альтернатива, которую я могу придумать, — это запустить Linux на виртуальной машине в Windows и запустить в ней Mosquitto, но это, вероятно, не то, что вам нужно.
- person jpmens; 04.08.2015
Я создаю его для Windows, используя только серверные части HTTP и JWT.
Пришлось исправить:
- Поместите __declspec(dllexport) в функции mosquitto_auth_Xyz... в auth-plug.c.
- Добавлен альтернативный код для fnmatch(a,b) и strsep() в auth-plug.c, см. ниже.
- В log.c я вернулся к использованию log=__log вместо log=mosquitto_log_printf, поскольку мне не удалось импортировать функцию из libmosquitto.
- Скомпилировано с использованием 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