添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
傻傻的刺猬  ·  Spring和HikariPool ...·  1 年前    · 
礼貌的汉堡包  ·  Jupyter Notebook 下 ...·  1 年前    · 

转自:http://blog.csdn.net/clever101/article/details/47455501

zeromq是一个最近比较火的跨平台消息中间件,最近准备研究它,故下载它的源码编译了一下。我是使用VS2008编译的,下载下来在zeromq-4.1.2\builds\msvc\vs2008目录下找到相应的解决方案文件。编译过程中有几个注意事项:

1.    出现1>e:\test\zeromq-4.1.2\include\zmq.h(78): fatal error C1083: 无法打开包括文件:“stdint.h”: No such file or directory

解决办法是:新建一个stdint.h,代码如下:

  1. /* stdint.h standard header */
  2. #ifndef _STD_INT
  3. #define _STD_INT
  4. #ifndef _STDINT
  5. #define _STDINT
  6. #ifndef RC_INVOKED
  7. #include <yvals.h>
  8. /* NB: assumes
  9. byte has 8 bits
  10. long is 32 bits
  11. pointer can convert to and from long long
  12. long long is longest type
  13. */
  14. _C_STD_BEGIN
  15. /* TYPE DEFINITIONS */
  16. typedef signed char int8_t;
  17. typedef short int16_t;
  18. typedef int int32_t;
  19. typedef unsigned char uint8_t;
  20. typedef unsigned short uint16_t;
  21. typedef unsigned int uint32_t;
  22. typedef signed char int_least8_t;
  23. typedef short int_least16_t;
  24. typedef int int_least32_t;
  25. typedef unsigned char uint_least8_t;
  26. typedef unsigned short uint_least16_t;
  27. typedef unsigned int uint_least32_t;
  28. typedef char int_fast8_t;
  29. typedef int int_fast16_t;
  30. typedef int int_fast32_t;
  31. typedef unsigned char uint_fast8_t;
  32. typedef unsigned int uint_fast16_t;
  33. typedef unsigned int uint_fast32_t;
  34. #ifndef _INTPTR_T_DEFINED
  35. #define _INTPTR_T_DEFINED
  36. #ifdef _WIN64
  37. typedef __int64 intptr_t ;
  38. #else /* _WIN64 */
  39. typedef _W64 int intptr_t ;
  40. #endif /* _WIN64 */
  41. #endif /* _INTPTR_T_DEFINED */
  42. #ifndef _UINTPTR_T_DEFINED
  43. #define _UINTPTR_T_DEFINED
  44. #ifdef _WIN64
  45. typedef unsigned __int64 uintptr_t ;
  46. #else /* _WIN64 */
  47. typedef _W64 unsigned int uintptr_t ;
  48. #endif /* _WIN64 */
  49. #endif /* _UINTPTR_T_DEFINED */
  50. typedef _Longlong int64_t;
  51. typedef _ULonglong uint64_t;
  52. typedef _Longlong int_least64_t;
  53. typedef _ULonglong uint_least64_t;
  54. typedef _Longlong int_fast64_t;
  55. typedef _ULonglong uint_fast64_t;
  56. typedef _Longlong intmax_t;
  57. typedef _ULonglong uintmax_t;
  58. /* LIMIT MACROS */
  59. #define INT8_MIN    (-0x7f - _C2)
  60. #define INT16_MIN   (-0x7fff - _C2)
  61. #define INT32_MIN   (-0x7fffffff - _C2)
  62. #define INT8_MAX    0x7f
  63. #define INT16_MAX   0x7fff
  64. #define INT32_MAX   0x7fffffff
  65. #define UINT8_MAX   0xff
  66. #define UINT16_MAX  0xffff
  67. #define UINT32_MAX  0xffffffff
  68. #define INT_LEAST8_MIN      (-0x7f - _C2)
  69. #define INT_LEAST16_MIN     (-0x7fff - _C2)
  70. #define INT_LEAST32_MIN     (-0x7fffffff - _C2)
  71. #define INT_LEAST8_MAX      0x7f
  72. #define INT_LEAST16_MAX     0x7fff
  73. #define INT_LEAST32_MAX     0x7fffffff
  74. #define UINT_LEAST8_MAX     0xff
  75. #define UINT_LEAST16_MAX    0xffff
  76. #define UINT_LEAST32_MAX    0xffffffff
  77. #define INT_FAST8_MIN       (-0x7f - _C2)
  78. #define INT_FAST16_MIN      (-0x7fff - _C2)
  79. #define INT_FAST32_MIN      (-0x7fffffff - _C2)
  80. #define INT_FAST8_MAX       0x7f
  81. #define INT_FAST16_MAX      0x7fff
  82. #define INT_FAST32_MAX      0x7fffffff
  83. #define UINT_FAST8_MAX      0xff
  84. #define UINT_FAST16_MAX     0xffff
  85. #define UINT_FAST32_MAX     0xffffffff
  86. #if _INTPTR == 0 || _INTPTR == 1
  87. #define INTPTR_MAX          0x7fffffff
  88. #define INTPTR_MIN          (-INTPTR_MAX - _C2)
  89. #define UINTPTR_MAX         0xffffffff
  90. #else /* _INTPTR == 2 */
  91. #define INTPTR_MIN          (-_LLONG_MAX - _C2)
  92. #define INTPTR_MAX          _LLONG_MAX
  93. #define UINTPTR_MAX         _ULLONG_MAX
  94. #endif /* _INTPTR */
  95. #define INT8_C(x)   (x)
  96. #define INT16_C(x)  (x)
  97. #define INT32_C(x)  ((x) + (INT32_MAX - INT32_MAX))
  98. #define UINT8_C(x)  (x)
  99. #define UINT16_C(x) (x)
  100. #define UINT32_C(x) ((x) + (UINT32_MAX - UINT32_MAX))
  101. #ifdef _WIN64
  102. #define PTRDIFF_MIN        INT64_MIN
  103. #define PTRDIFF_MAX        INT64_MAX
  104. #else /* _WIN64 */
  105. #define PTRDIFF_MIN        INT32_MIN
  106. #define PTRDIFF_MAX        INT32_MAX
  107. #endif /* _WIN64 */
  108. #define SIG_ATOMIC_MIN  INT32_MIN
  109. #define SIG_ATOMIC_MAX  INT32_MAX
  110. #ifndef SIZE_MAX
  111. #ifdef _WIN64
  112. #define SIZE_MAX      UINT64_MAX
  113. #else /* _WIN64 */
  114. #define SIZE_MAX      UINT32_MAX
  115. #endif /* _WIN64 */
  116. #endif /* SIZE_MAX */
  117. //#define WCHAR_MIN 0x0000
  118. #define WCHAR_MAX   0xffff
  119. #define WINT_MIN    0x0000
  120. #define WINT_MAX    0xffff
  121. #define INT64_MIN  (-0x7fffffffffffffff - _C2)
  122. #define INT64_MAX  0x7fffffffffffffff
  123. #define UINT64_MAX 0xffffffffffffffffU
  124. #define INT_LEAST64_MIN    (-0x7fffffffffffffff - _C2)
  125. #define INT_LEAST64_MAX    0x7fffffffffffffff
  126. #define UINT_LEAST64_MAX   0xffffffffffffffffU
  127. #define INT_FAST64_MIN     (-0x7fffffffffffffff - _C2)
  128. #define INT_FAST64_MAX     0x7fffffffffffffff
  129. #define UINT_FAST64_MAX    0xffffffffffffffffU
  130. #define INTMAX_MIN     (-0x7fffffffffffffff - _C2)
  131. #define INTMAX_MAX     0x7fffffffffffffff
  132. #define UINTMAX_MAX    0xffffffffffffffffU
  133. #define INT64_C(x)      ((x) + (INT64_MAX - INT64_MAX))
  134. #define UINT64_C(x)     ((x) + (UINT64_MAX - UINT64_MAX))
  135. #define INTMAX_C(x)     INT64_C(x)
  136. #define UINTMAX_C(x)    UINT64_C(x)
  137. _C_STD_END
  138. #endif /* RC_INVOKED */
  139. #endif /* _STDINT */
  140. #if defined(_STD_USING)
  141. using _CSTD int8_t; using _CSTD int16_t;
  142. using _CSTD int32_t; using _CSTD int64_t;
  143. using _CSTD uint8_t; using _CSTD uint16_t;
  144. using _CSTD uint32_t; using _CSTD uint64_t;
  145. using _CSTD int_least8_t; using _CSTD int_least16_t;
  146. using _CSTD int_least32_t; using _CSTD int_least64_t;
  147. using _CSTD uint_least8_t; using _CSTD uint_least16_t;
  148. using _CSTD uint_least32_t; using _CSTD uint_least64_t;
  149. using _CSTD intmax_t; using _CSTD uintmax_t;
  150. using _CSTD uintptr_t ;
  151. using _CSTD intptr_t ;
  152. using _CSTD int_fast8_t; using _CSTD int_fast16_t;
  153. using _CSTD int_fast32_t; using _CSTD int_fast64_t;
  154. using _CSTD uint_fast8_t; using _CSTD uint_fast16_t;
  155. using _CSTD uint_fast32_t; using _CSTD uint_fast64_t;
  156. #endif /* defined(_STD_USING) */
  157. #endif /* defined _STD_INT */

然后把它放到\zeromq-4.1.2\include目录下,然后在\zeromq-4.1.2\include\zmq.h将

# include <stdint.h > 改为 # include "stdint.h" 这样做是为了从本地目录开始查找头文件。

2. 1>e:\test\zeromq-4.1.2\include\stdint.h(17): error C2371: “int8_t”: 重定义;不同的基类型

1>        e: \test\zeromq-4.1.2\src\stdint.hpp(42): 参见“int8_t”的声明

解决办法:将\zeromq-4.1.2\src\stdint.hpp下的

[cpp] view plain
  1. #ifndef int8_t
  2. typedef __int8 int8_t;
  3. #endif
  4. #ifndef int16_t
  5. typedef __int16 int16_t;
  6. #endif
[cpp] view plain
  1. //#ifndef int8_t
  2. //typedef __int8 int8_t;
  3. //#endif
  4. //#ifndef int16_t
  5. //typedef __int16 int16_t;
  6. //#endif
(就是全部注释掉)

3.编译出现1>session_base.obj : errorLNK2019: 无法解析的外部符号 "public: __thiscallzmq::socks_connecter_t::socks_connecter_t(class zmq::io_thread_t *,classzmq::session_base_t *,struct zmq::options_t const &,struct zmq::address_t*,struct zmq::address_t *,bool)"(??0socks_connecter_t@zmq@@QAE@PAVio_thread_t@1@PAVsession_base_t@1@ABUoptions_t@1@PAUaddress_t@1@3_N@Z),该符号在函数 "private: void __thiscallzmq::session_base_t::start_connecting(bool)"(?start_connecting@session_base_t@zmq@@AAEX_N@Z) 中被引用

1>../../../../lib/libzmq.dll: fatal error LNK1120: 1 个无法解析的外部命令

解决办法是:将\zeromq-4.1.2\src下面的全部cpp文件都添加进libzmq工程的SourceFiles的虚拟目录下。

转自:http://blog.csdn.net/clever101/article/details/47455501zeromq是一个最近比较火的跨平台消息中间件,最近准备研究它,故下载它的源码编译了一下。我是使用VS2008编译的,下载下来在zeromq-4.1.2\builds\msvc\vs2008目录下找到相应的解决方案文件。编译过程中有几个注意事项:1.    出现1
ZeroMQ 是一个轻量级消息内核。它可用于C、C++、Python、.NET /Mono、Fortran 和 Java 语言。它运行在AIX ,FreeBSD的,基于HP - UX , Linux和MacOS下, OpenBSD系统, OpenVMS , QNX Neutrino,Solaris 和 Windows 操作系统。 ZeroMQ 的核心引擎为 libzmq,该引擎由C++编写,速度很快。由于从libzmq v4.3.0版本开始, ZeroMQ 不再支持Win10,所以这里选择低版本的
Anaconda Navigator和Spyder都打不开了,搜资料搜了好久弄成功,总结一下我遇到的问题(本人经常遇到各种奇葩问题) ps:第一次写博客比较菜,只是在安装过程中确实走了很多弯路,想要总结在这里留作纪念 1.Anaconda Navigator打不开界面 【这是唯一让我成功打开界面的一篇博客,必须说一句太厉害了!!!】(https://blog.csdn.net/weixin_42529892/article/details/81503261) 点击这里跳转 2.Spyder打不开界面
ZeroMQ 是一种消息传递库,可以用于在不同进程或不同机器上的应用程序之间进行通信。以下是使用 ZeroMQ 进行通信的基本步骤: 1. 安装 ZeroMQ :首先需要从 ZeroMQ 官网下载和安装 ZeroMQ 库。 2. 选择 ZeroMQ 协议:选择一种 ZeroMQ 协议来实现通信。 ZeroMQ 支持多种协议,例如TCP、IPC、inproc等。 3. 编写代码:使用 ZeroMQ 提供的API编写代码,实现消息的发送和接收。代码需要在发送端和接收端分别编写。 4. 启动应用:在发送端和接收端分别启动应用程序。 5. 传递消息:发送端使用send()函数发送消息,接收端使用recv()函数接收消息。消息可以是任意类型的数据,例如字符串、JSON对象等。 6. 关闭连接:在通信结束后,需要使用close()函数关闭连接。 需要注意的是,在使用 ZeroMQ 进行通信时,需要保证发送端和接收端使用的协议和端口号相同,否则无法建立连接。另外, ZeroMQ 还提供了一些高级功能,例如队列管理、消息过滤等,可以根据实际需求选择使用。