windows使用srpc库
2021/9/26 7:14:29
本文主要是介绍windows使用srpc库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
接近半年前写过一篇如何编译windows的srpc库链接是:srpc windows 编译_从无~到有的博客-CSDN博客编译环境:vs2017、cmake首先下载sougou的srpc安装包,其次下载protobuf,剩余的可以通过srpc里的连接下载;下图是需要准备的第三方依赖;解压srpc压缩包使用cmake打开注意路径点击configure开始配置,设置一下win32如下图报错没装openssl安装安装包即可安装完成过后就换问题了 如下图,protobuf需要3点几以上注意这里是要源码安装包下下来没用重新打开一个cmake编译protobuf注意图中protobuhttps://blog.csdn.net/qq_16238157/article/details/115870492
后来在使用的时候出现了问题就给搁置了, 前几个月捡了起来。
使用第三方公司的库经常出现编译不过提示各种无法解析的函数,这个倒是知道就是编译器找不到对应的函数实现,可是使用第三方库怎么会找不到第三方公司肯定是验证过得,就很无语,这次编译srpc再次遇到该问题,当时很忙于是我选择逃避这个问题。。。过了几个月后上一篇文章有人再问,正好我那个时候没那么忙了,于是我下定决心要搞定这个问题,功夫不负有心人这次我成功了。
其实在使用第三方库的时候,也就是第三方库的例子的时候,我经常会漏掉一个文件CMakeLists.txt文件,因为不懂makefile,也不懂cmake所以这个文件我看的时候是很抗拒的,但是这个文件确是我搞定使用srpc库成功的关键。
首先看看srpc文件路径下的tutorial文件夹中的CMakeLists.txt文件:
一堆应该是找依赖环境的cmake语法我选择忽略因为上一篇已经编译过了,环境应该是配好了,接下来应该关心如何生成exe:
这段代码引起了我的注意其中add_executable感觉很像生成exe的命令,百度一下:
Cmake命令之add_executable介绍 - 简书命令格式add_executable ( [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [source...https://www.jianshu.com/p/19765d4932a4确实和我猜想的一样那么可以看的出来这行代码就是解决问题的关键因素了很明显四个参数从上面这篇文章中可以看到有介绍:
第一个参数:可执行目标文件的名字
第二个参数:构建可执行目标文件所需要的源文件
第三个第四个参数应该是protobuf的依赖
第二个参数就是tutorial文件夹中的所有文件
可以看出src是在遍历TUTORIAL_PB_LIST这个变量在看看下图
这个变量是手动写好的也就是tutorial文件夹下的所有教程文件
所以这个foreach是在遍历生成exe!这个foreach里面还有一个关键字是非常有用的
百度一下:
cmake学习笔记之add_library、target_link_libraries和link_directories - 大老虎打老虎 - 博客园cmake是Linux(这里默认是Ubuntu系统)下常使用的编译C++的工具,而使用cmake就需要先在CmakeLists.txt文件中对编译规则进行。这里介绍常用的三种指令add_libraryhttps://www.cnblogs.com/wangshaowei/p/11324100.html target_link_libraries:该指令的作用为将目标文件与库文件进行链接
终于知道为啥编译一个小小的例子都编不过缺库!
可以看到这个变量有三种值,第一个是苹果,第二个是windows第三个应该是linxu 也就是说我们要把他后面一串库给链接上才能编译过,这些名字百度一下就能找到,我就不细聊了
这篇关于windows使用srpc库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享