首页 > 其他分享 >rpcz VC2010 构建

rpcz VC2010 构建

时间:2023-06-15 22:32:18浏览次数:46  
标签:.. cc rpcz 构建 file error include VC2010


rpcz VC2010 构建


rpcz 是应用ZeroMQ和Protobuf开发的RPC.

见: https://github.com/reinferio/rpcz

及 https://code.google.com/p/rpcz/


rpcz的CMake脚本应该是仅用于Linux. 用于VC需要更改错误。



CMake Error at D:/Program Files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:1192 (message):

  Unable to find the requested Boost libraries.

如果找不到boost_thread库,添加


SET(Boost_USE_STATIC_LIBS TRUE)


因为Windows下Boost默认是不生成动态库的。



Required library ZeroMQ NOT FOUND.
Could NOT find PROTOBUF (missing:  PROTOBUF_LIBRARY PROTOBUF_INCLUDE_DIR)


可手工在cmake-gui中设置ZeroMQ的INCLUDE_DIR和LIBRARY, 以及protobuf的源码目录.



CMake生成sln后, 用VC打开, 构建.


cl : Command line error D8021: invalid numeric argument '/Wextra'



将gcc编译参数用if包括:


+if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS
  "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-sign-compare -Wno-unused-parameter")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -g -Werror")
+endif(CMAKE_COMPILER_IS_GNUCXX)



application.cc(18): fatal error C1083: Cannot open include file: 'zmq.hpp': No such file or directory

需要设置 cppzmq 目录.


添加CPPZMQ_DIR.


或者直接

include_directories(E:/JinQing/Src/cppzmq)



src\rpcz/rpcz.pb.h(293): error C2059: syntax error : 'constant'

生成的代码 NO_ERROR 与VC Error.h 中的 define 冲突.


改为 APPLICATION_NO_ERROR 常量,不会与宏冲突。



clock.cc
..\..\..\..\LibSrc\rpcz\src\rpcz\clock.cc(18): fatal error C1083: Cannot open include file: 'sys/time.h': No such file or directory
将gettimeofday()改为: 

    return boost::chrono::high_resolution_clock().now().time_since_epoch().count / 1000000;
 

  connection_manager.cc
..\..\..\..\LibSrc\rpcz\src\rpcz\connection_manager.cc(25): fatal error C1083: Cannot open include file: 'pthread.h': No such file or directory
DELETE 


  connection_manager.cc
..\..\..\..\LibSrc\rpcz\src\rpcz\connection_manager.cc(28): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory

改为:


#ifdef WIN32
#include <process.h>  // for getpid()
#else
#include <unistd.h>  // for getpid()
#endif
 

..\..\..\..\LibSrc\rpcz\src\rpcz\reactor.cc(122): error C2079: 'action' uses undefined struct 'rpcz::install_signal_handler::sigaction'
..\..\..\..\LibSrc\rpcz\src\rpcz\reactor.cc(125): error C3861: 'sigemptyset': identifier not found

改为:


void install_signal_handler() {
#ifdef WIN32
  signal(SIGINT, signal_handler);
  signal(SIGTERM, signal_handler);
#else
  struct sigaction action;
  action.sa_handler = signal_handler;
  action.sa_flags = 0;
  sigemptyset(&action.sa_mask);
  sigaction(SIGINT, &action, NULL);
  sigaction(SIGTERM, &action, NULL);
#endif  // WIN32
} 


  server.cc
..\..\..\..\LibSrc\rpcz\src\rpcz\server.cc(20): fatal error C1083: Cannot open include file: 'sys/errno.h': No such file or directory
DELETE 


  zmq_utils.cc
D:/LibSrc/rpcz/include\rpcz/zmq_utils.hpp(58): error C2146: syntax error : missing ';' before identifier 'has_more_'
改为int 


------ Build started: Project: rpcz, Configuration: Release Win32 ------
LINK : fatal error LNK1104: cannot open file 'libboost_date_time-vc100-mt-1_53.lib'
Add lib dir. 


3>------ Build started: Project: zsendrpc, Configuration: Debug Win32 ------
3>  zsendrpc.cc
3>LINK : fatal error LNK1104: cannot open file 'Debug\rpcz.lib'

仅生成rpcz.dll, 没有lib. 因为没有export.


应该生成静态库.


开启 rpcz_build_static


并且让zsendrpc在rpcz.lib之后编译:


    add_dependencies(zsendrpc rpcz_static)  # zsendrpc need rpcz.lib

修改后的代码见:

https://github.com/jinq0123/rpcz







标签:..,cc,rpcz,构建,file,error,include,VC2010
From: https://blog.51cto.com/u_16162321/6495488

相关文章

  • 力扣---1177. 构建回文串检测
    给你一个字符串 s,请你对 s 的子串进行检测。每次检测,待检子串都可以表示为 queries[i]=[left,right,k]。我们可以重新排列子串 s[left],...,s[right],并从中选择最多k 项替换成任何小写英文字母。 如果在上述检测过程中,子串可以变成回文形式的字符串,那么检测结......
  • 1177. 构建回文串检测
    给你一个字符串 s,请你对 s 的子串进行检测。每次检测,待检子串都可以表示为 queries[i]=[left,right,k]。我们可以重新排列子串 s[left],...,s[right],并从中选择最多k 项替换成任何小写英文字母。如果在上述检测过程中,子串可以变成回文形式的字符串,那么检测结果......
  • 零代码量化投资:用ChatGPT构建一个投资交易策略并进行回测
    准备后数据后,就可以开发构建量化投资策略了。比较知名、流行的量化策略回测框架有vnpy、pyalgotrader、backtrader等。下面以backtrader为例,来运行一个最简单的投资策略。先安装backtrader的库:pipinstallbacktrader然后在ChatGPT中输入提示词:写一段Python代码,用Backtrader库构建......
  • Python用字典构建多级菜单
    Python用字典构建多级菜单#key-value#字典是无序的,因为他没有下标,通过key找info={'stu01':"liuhaolai",'stu02':"wangshulin"}print(info['stu01'])info['stu03']='刘**'#若不存在该key,则直接添加info['stu04&#......
  • docker-compose构建kratos微服务项目运行失败,提示:runtime/cgo: pthread_create failed
    这个问题网上解决方案较少,我们这边问题定位是docker-compose.yaml配置问题在配置文件中新增配置如下:privileged:true设置容器的权限为root 最后解决......
  • 构建简单CMake及vscode调试
    main.cpp#include<iostream>intmain(){intnum_a,num_b;num_a=10;num_b=20;std::cout<<"num_a="<<num_a<<std::endl;std::cout<<"num_b="<<num_b<<std......
  • 当SRS遇到K8s:如何构建海量推流源站?
    Photoby OscarIvanEsquivelArteaga on Unsplash文/杨成立本章描述了基于K8s,如何构建OriginCluster支持超多推流场景。OriginCluster通过配置其他源站的信息,在本源站没有流时查询到流的位置,通过RTMP302定向到指定源站,具体原理可以参考#464。主要应用场景如下:源站灾备:即使......
  • 构建之法阅读笔记二
    在《构建之法》一书中,作者鲍勃·马丁强调了软件开发实践中的重要性和挑战,并提供了一些实用的技术和方法来解决这些问题。其中,他特别强调了代码质量、可维护性和测试的重要性。在书中,作者介绍了许多面向对象设计原则,如单一职责原则、依赖倒置原则和接口隔离原则等,并详细阐述了它们......
  • 构建之法阅读笔记其三
    《构建之法》是一本关于软件开发实践的经典著作。在这本书中,作者鲍勃·马丁通过许多实际案例和经验分享,阐述了代码质量和可维护性对于软件开发的重要性,并提供了一些实用的技术和方法来提高软件开发效率和质量。在书中,作者提出了“SOLID”原则和“DRY”原则,并详细介绍了每个原则的......
  • java构建TCP/IP协议:DNS,域名解析协议的基本原理介绍
    从本节开始,我们研究和实现一个体系较为复杂的协议,也就是域名解析协议,简写为DNS。该协议几乎也是我们”日用而不知“的幕后英雄,没有它肯定就没有现在的互联网繁荣。当我们在浏览器上输入网址,例如www.baidu.com时,浏览器先通过DNS协议找到与该网址对应的IP地址,然后再使用IP去向服务器......