Двоичная версия Rserve, предусмотренная в https://rforge.net/Rserve/files/, не собирается в Microsoft Visual C ++.В файле ReadMe.txt автор указывает, что для Windows нет конфигурации, но есть специальный Makefile.win.Нам не удалось его построить, используя "make -f Makefile.win", поскольку файл config.h не предоставляется (только config.h.in).
Итак,закомментируйте следующую строку в заголовочном файле Rsrv.h:
// # include «config .h»
На этом этапегенерируется следующая ошибка:
rsrv .h (384): фатальная ошибка C1189: # error: "Невозможно определить порядковый номер. Убедитесь, что config .h включен или _ _ {BIG | LITTLE} _ENDIAN__ -определено. "
Решить проблемы, связанные с порядком байтов.В заголовочном файле Rsvr.h заменить:
/* Windows is little-endian is most cases, anywhere else we're stuck*/
# error "Cannot determine endianness. Make sure config.h is included or __{BIG|LITTLE}_ENDIAN__ is defined ."
# endif
на:
/********* MODIFICATION *************/
/* # error "Cannot determine endianness. Make sure config.h is included or __{BIG|LITTLE}_ENDIAN__ is defined ." */
/************************************/
#define _BIG_ENDIAN (*(uint16_t *)?\xff? < 0x100)
Убедитесь, что среда сборки ссылается на файл библиотеки Winsock Ws2_32.lib.Для этого добавьте следующие строки кода перед основной функцией:
/* indicate to the linker that the Ws2_32.lib file is needed */
#pragma comment(lib, "Ws2_32.lib")
Приложения, использующие Winsock, должны быть связаны с библиотечным файлом Ws2_32.lib.
Для получения более подробной информации об интеграции R и Microsoft Visual C ++ через Rserve посетите https://www.researchgate.net/publication/305789407_Rserve_for_Windows_case_of_R_and_Microsoft_Visual_C_integration