Как построить zeromq с MinGW?

Я попытался официальный HOWTO, но не удалось. Я получил ошибку: "The procedure entry point InterlockedCompareExchange@12 could not be located in the dynamic link library libstdc++-6.dll"

1 ответ

Проблема возникла из-за старого gcc компилятора в комплекте с DevKit с *************.org(4.5 против 4.8 на моем ПК). Вместо этого используйте MSYS. Предположим, что у нас есть источник zeromq внутри D:\libs\zeromq, тогда процедура такова:

  1. Загрузите установщик GUI MinGW.
  2. Установите базу и MSYS (если у вас уже есть рабочий компилятор gcc, вам, вероятно, нужен только MSYS).
  3. Запустите среду MSYS, выполнив C:\MinGW\msys\1.0\msys.bat.
  4. Следуйте за использованием MSYS с секцией MinGW:
    1. mount c: /mingw/mingw
    2. cd/d/libs/zeromq
    3. ./configure --prefix=/mingw
    4. make
    5. Скопируйте /d/libs/zeromq/src/.libs/libzmq.dll в нужное место.

На самом деле мне нужно было использовать ZeroMQ с C++, поэтому я загрузил zmq.hpp, переместил его в каталог и скомпилировал hwserver.cpp для его проверки:

C:\MinGW\bin\g++.exe -o hwserver hwserver.cpp -L. -lzmq -ID:\libs\zeromq\include

Это сработало, но когда я его запустил, я получил:

Assertion failed!

Program: D:\tmp\zmq\hwserver.exe
File: D:\libs\zeromq\include/zmq.hpp, Line 280

Expression: rc == 0

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application support team for more information.

Мне удалось избавиться от этой ошибки, комментируя строки 279, 280. Аналогичная проблема

licensed under cc by-sa 3.0 with attribution.