win10-VMware(ubuntu)-VS2019-C++-跨平台编译(2)-动态链接库

动态库:在windows下后缀为.dll ,在ubuntu下后缀为.so.
本文以封装的SOCKET为例:
xsocket:为被调用的动态库:xsocket.dll ,xsocket.so,xsocket.lib
tcpserver:调用动态库的可执行程序
1.在ubuntu 下构建目录:bin,src,lib,doc
2.win10 下用VS2019在一个解决方案中创建两个工程,并编译
   动态库导出设置
3.ubuntu 下xsocket和tcpserver分别写makefike并编译

 



1.在ubuntu 下构建目录:bin,src,lib,doc
2.win10 下用VS2019在一个解决方案中创建两个工程,并编译
  2.1 库文件xsocket 设置:   添加动态库导出宏

//在需要导出的类前面添加宏
#ifdef XSOCKET_EXPORTS
#define XSOCKET_API __declspec(dllexport)//导入
#else
#define XSOCKET_API __declspec(dllimport)//导出
#endif
class  XSOCKET_API XTcp
{
    
};



  
  2.2 tcpserver 调用xsocket

启动项目

 项目依赖项

 

 

 

 3.ubuntu 下xsocket和tcpserver分别写makefike并编译
  3.1xsocket:makefile
  

#$+ 对应依赖项  $@对应目标  -fpic 代码与位置无关 -shared 编成动态库 -std=c++11
#tab键而非空格键
libxsocket.so:XTcp.cpp XTcp.h
    g++ $+ -o  $@ -fpic -shared -std=c++11

#复制到系统路径下:
cp *.so /usr/lib

 3.2tcpserver:makefile
 

tcpserver:tcpserver.cpp
	g++ $+ -o $@ -I../xsocket/xsocket  -std=c++11 -lpthread -lxsocket -L../xsocket/xsocket
#../xsocket 头文件  -std=c++11 -lpthread  用来表明头文件的  -lxsocket 引用库名  -L../xsocket 增加了库路径
#-L查找动态链接库的路径

 3.3运行的编译脚本
 

#直接在tcpserver目录下:run bash
export LD_LIBRARY_PATH=../xsocket
./tcpserver

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值