无法解析的外部符号问题小结

无法解析的外部符号问题小结问题1:在编写通信相关程序中,引用了一个静态库(该静态库编译没有问题,并被其他项目引用),该库是对SOCKET的一个封装。基本结构如下: 在属性中添加了该库的引用后,编译仍然报错,错误如下:safmq2005.lib(tcpsocket.obj):errorLNK2019:无法解析的外部符号_gethostbyname@4,该符号在函数”publ

大家好,又见面了,我是你们的朋友全栈君。

问题1:在编写通信相关程序中,引用了一个静态库(该静态库编译没有问题,并被其他项目引用),该库是对SOCKET的一个封装。基本结构如下:
无法解析的外部符号问题小结 



在属性中添加了该库的引用后,编译仍然报错,错误如下:

safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _gethostbyname@4,该符号在函数 “public: __thiscall tcpsocket::Socket::Socket(char const *,short)” (??0Socket@tcpsocket@@QAE@PBDF@Z) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _inet_addr@4,该符号在函数 “public: __thiscall tcpsocket::Socket::Socket(char const *,short)” (??0Socket@tcpsocket@@QAE@PBDF@Z) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _WSAGetLastError@0,该符号在函数 “public: __thiscall tcpsocket::Socket::Socket(char const *,short)” (??0Socket@tcpsocket@@QAE@PBDF@Z) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _socket@12,该符号在函数 “public: __thiscall tcpsocket::Socket::Socket(char const *,short)” (??0Socket@tcpsocket@@QAE@PBDF@Z) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _send@16,该符号在函数 “public: virtual unsigned int __thiscall tcpsocket::Socket::send(char const *,unsigned int)” (?send@Socket@tcpsocket@@UAEIPBDI@Z) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _recv@16,该符号在函数 “public: virtual unsigned int __thiscall tcpsocket::Socket::receive(char *,unsigned int)” (?receive@Socket@tcpsocket@@UAEIPADI@Z) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _closesocket@4,该符号在函数 “public: virtual void __thiscall tcpsocket::Socket::close(void)” (?close@Socket@tcpsocket@@UAEXXZ) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _getpeername@12,该符号在函数 “public: virtual void __thiscall tcpsocket::Socket::getPeerName(struct sockaddr_in *)” (?getPeerName@Socket@tcpsocket@@UAEXPAUsockaddr_in@@@Z) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _getsockopt@20,该符号在函数 “private: void __thiscall tcpsocket::BufferedSocket::init(int)” (?init@BufferedSocket@tcpsocket@@AAEXH@Z) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _listen@8,该符号在函数 “public: __thiscall tcpsocket::ServerSocket::ServerSocket(short,unsigned long,int)” (??0ServerSocket@tcpsocket@@QAE@FKH@Z) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _bind@12,该符号在函数 “public: __thiscall tcpsocket::ServerSocket::ServerSocket(short,unsigned long,int)” (??0ServerSocket@tcpsocket@@QAE@FKH@Z) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _setsockopt@20,该符号在函数 “public: __thiscall tcpsocket::ServerSocket::ServerSocket(short,unsigned long,int)” (??0ServerSocket@tcpsocket@@QAE@FKH@Z) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _accept@12,该符号在函数 “public: class tcpsocket::Socket __thiscall tcpsocket::ServerSocket::acceptConnection(void)” (?acceptConnection@ServerSocket@tcpsocket@@QAE?AVSocket@2@XZ) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _WSAStartup@8,该符号在函数 “public: __thiscall _WSAINIT::_WSAINIT(void)” (??0_WSAINIT@@QAE@XZ) 中被引用
1>safmq2005.lib(tcpsocket.obj) : error LNK2019: 无法解析的外部符号 _WSACleanup@0,该符号在函数 “public: __thiscall _WSAINIT::~_WSAINIT(void)” (??1_WSAINIT@@QAE@XZ) 中被引用


后来发现,在stdafx.h文件中添加如下语句就OK了
#include<WinSock.h> #prama comment(lib, "ws2_32.lib")

就OK了。

结构如下:
无法解析的外部符号问题小结 

但是ws2_32.lib已经在原有项目中包含了。为什么还要再包含一次呢。


初步解释:
静态库只是把自己工程的文件编译成.obj文件,再将.obj文件整合成静态库,其中并没有包含ws2_32.lib.所有要
在AppProject中包含ws2_32.lib.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153497.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ASEMI整流桥MB10F参数,MB10F特征,MB10F机械数据

    ASEMI整流桥MB10F参数,MB10F特征,MB10F机械数据编辑-ZASEMI整流桥MB10F参数:型号:MB10F最大重复峰值反向电压(VRRM):1000F最大有效值电压(VRMS):700V最大直流阻断电压(VDC):1000V最大平均正向输

  • 数据库常见查询语句_数据库检索语句

    数据库常见查询语句_数据库检索语句常用数据库查询语句基本查询select字段1,字段2,…from表名;例如:selectid,namefromstu;条件查询select字段1,字段2,…from表名where字段关系符号值;关系符号<=>=<=!=大于等于大于等于小于等于不等于例如:select*fromstuid>2;andorin(范围内满足in内部条件)

  • vue入门基础教程之经验总结篇(小白入门必备)|建议收藏「建议收藏」

    vue入门基础教程之经验总结篇(小白入门必备)|建议收藏「建议收藏」VUEvue组件的三个API:prop、event、slotprop定义了这个组件有哪些可配置的属性,组件的核心功能也都是它来确定的。组件里定义的prop都是单向数据流,只能通过父级组件对齐进行修改,组件本身不能修改props的值,只能修改定义在data里的数据,非要修改,也是通过后面介绍的自定义事件通知父级,由父级来修改;在子组件定义prop是,使用了camelCase的命名法,由于html特性不区分大小写。camelCase的prop用于特性时,会转为短横线隔开(比如availab

  • 区块链从概念到落地,多样化应用激活大数据经济

    区块链从概念到落地,多样化应用激活大数据经济

  • mysql 设置外键约束(foreign key)

    mysql 设置外键约束(foreign key)建立外键约束可以采用列级约束语法和表级约束语法,如果仅仅对单独的一个数据列建立外键约束,则使用列级约束语法即可;如果需要对多个列组合创建外键约束,或者需要为外键约束指定名字则必须使用表级约束语法。      使用列级约束语法建立外键约束直接使用references关键字,references指定该列参照的哪个主表,以及参照主表的哪一列。如下SQL语句所示:createtablet

  • 小米6最好用的系统版本[通俗易懂]

    小米6最好用的系统版本[通俗易懂]小米6最好用的系统版本小米6最好用的系统稳定版10.4.3首先说一下为什么这个版本的系统我认为最好用,因为自己是米粉,也比较喜欢用最新的系统,去年用小米6收到了10.4.2版本的系统更新,体验之后感觉真的很nice,安卓9流畅度提升非常高,包括软件的启动速度,各项反应,但是有一些小瑕疵,比如断流,软件闪退,系统掉帧,然后过了一段时间小米推送了10.4.3稳定版,修复了这三个问题,体验至今为止,没有其他任何问题该版本优点总结如下第一,该版本基于miui10,系统简单易用,基本上算是miui的一个小成的

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号