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

无法解析的外部符号问题小结问题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.

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • iframe高度自适应_读取跨域iframe

    iframe高度自适应_读取跨域iframe采用JavaScript来控制iframe元素的高度是iframe高度自适应的关键,同时由于JavaScript对不同域名下权限的控制,引发出同域、跨域两种情况。由于客户端js使用浏览器的同源安全策略,跨域情况下,被嵌套页面如果想要获取和修改父页面的DOM属性会出现权限不足的情况,提示错误:Permissiondeniedtoaccessproperty’document’。这是

    2022年10月12日
    3
  • 背包问题九讲笔记_多重背包

    背包问题九讲笔记_多重背包摘自TianyiCui童鞋的《背包问题九讲》,稍作修改,方便理解。本文包含的内容:问题描述 基本思路(和完全背包类似) 转换为01背包问题求解(直接利用01背包)———————————————1、问题描述已知:有一个容量为V的背包和N件物品,第i件物品最多有Num[i]件

    2022年7月12日
    14
  • java入门编程(菜鸟教程)

    java入门编程(菜鸟教程)1.创建一个java程序的步骤a打开editplus软件,选择左上角的file选项,在弹出来的菜单中选择new然后再从弹出来的菜单中选择normaltextb按住ctrl+s快捷键,保存。1选择要保存的位置2给文件命名(以大写的字母开头)3选择文件的后缀,以.java后缀结尾c进行代码的编写,所有字符我们必须都是英文输入状态下的d打开控制台(win+r在弹出左下角的命令行中输入cmd)e找到java源文件的位置,我们使用cd命令定位到我们源文件的文件夹(我们可以在打开的源文件文件夹地址栏

    2022年5月26日
    41
  • 微信小程序—-全局变量「建议收藏」

    微信小程序—-全局变量「建议收藏」方法二:用引入js的方法定义全局变量实例:我在公用文件夹src下的js文件夹中创建的三个保存全局变量的文件:base64.js、config.js、data.js这三个文件作用:示例代码:使用方法:方法三:使用全局状态管理库微信小程序—-全局状态管理(便于全局埋点等操作)微信小程序—-redux在原生微信小程序的使用实例我的博客,欢迎交流!我的CSDN博客,欢迎交流!微信小程序专栏前端笔记专栏微信小程序实现部分高德地图功能的DEMO下载微信小…

    2022年9月27日
    2
  • java notifyall_notify的用法

    java notifyall_notify的用法作者:知乎用户链接:https://www.zhihu.com/question/37601861/answer/145545371来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。今天正好碰到这个问题,也疑惑了好久。看了一圈知乎上的答案,感觉没说到根上。所以自己又好好Google了一下,终于找到了让自己信服的解释。先说两个概念:锁池和等待池锁池:假设线程A已经拥有了某…

    2025年10月9日
    3
  • css里的clear_css display属性的值及用法

    css里的clear_css display属性的值及用法clear:none|left|right|both.对于CSS的清除浮动(clear),一定要牢记:这个规则只能影响使用清除的元素本身,不能影响其他元素。清除浮动方法,1,给父级元素添加class=“clearflex”2,在css中给父级添加属性:overflow:hidden;(我比较喜欢这个)3,伪元素清除法,4,建立空的div,命名为clear,在css中添加clear:both;…

    2025年10月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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