Проводка моей работы для потомков. Реализовавшись после того, как я закончил свой последний пример на C++, мне на самом деле нужно было делать это в C все время (удивительный, верно?). Обе итерации заняли у меня значительные усилия в качестве программиста на Java, и я думаю, что много примеров кода там оставляет слишком много дыр - особенно, когда дело доходит до здания, что значительно сложнее из командной строки для тех, кто привык к используя, например, Eclipse, для создания проекта и обработки зависимостей.Простые Flatbuffers над ZeroMQ C примеру - Скопируйте структуру в flatbuffer через zmq и обратно в структуру снова
Как установить зависимости для OSX с варева:
brew install flatcc
brew install zeromq
Вам нужно все стандартные строитель двоичные файлы, установленные как хорошо. Я использовал GCC для компиляции с:
gcc publisher.c -o bin/zmq_pub -lzmq -lflatcc
gcc subscriber.c -o bin/zmq_sub -lzmq
Это предполагает, что вы установили zmq и flatcc библиотеки, которые должны получить слинкован в файл/USR/местные/включить после заваривания завершения установки. Как это:
zmq_cpub $ls -la /usr/local/include lrwxr-xr-x 1 user group 37 Oct 18 18:43 flatcc -> ../Cellar/flatcc/0.3.4/include/flatcc
Вы получите ошибку компиляции, такие как: Undefined symbols for architecture x86_64:
, если у вас нет библиотеки правильно установлены/связаны между собой. Компилятор/компоновщик переименует функции и префикс их с помощью _ и потенциально путает вас. Как Undefined symbols for architecture x86_64 _flatcc_builder_init
, хотя никогда не должно быть _flatcc_builder_init
.
Это связано с тем, что связывание библиотек в C/C++ принципиально отличается от того, как в Java. Вместо определенного пути создания проекта, в который вы добавляете JAR, также есть известные места, где могут быть установлены внешние библиотеки C/C++. /usr/local/include
, /usr/local/lib
, /usr/lib
, и /usr/include
.
И не забудьте сгенерировать файлы заголовков для использования в локальном проекте после установки flatcc бинарного в путь:
flatcc -a Car.fbs
Это должно быть в значительной степени все препятствия, я столкнулся в моей поездке вниз по полосе С. Надеюсь, это поможет кому-то.