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

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

动态库:在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

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1498386.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-25
下一篇2022-06-25

发表评论

登录后才能评论

评论列表(0条)

    保存