undefined reference to `NetUserSetInfo‘和错误 LNK2019 无法解析的外部符号 _NetUserSetInfo@20问题

undefined reference to `NetUserSetInfo’和错误 LNK2019 无法解析的外部符号 _NetUserSetInfo@20问题

记录下学习路上碰到的问题,和解决问题的过程.

感谢
https://www.cnblogs.com/yangcs/p/5087490.html
的帮助.

在DEV C++上发现如下报错:[Error] ld returned 1 exit status

这个只能说明代码有问题,结合 undefined reference to `NetUserSetInfo’语句,锁定问题在这个NetUserSetInfo函数上.经过检查并没有发现调用拼写等问题.接着ctrl加左键,找到如下头文件,说明
头文件存在.
在这里插入图片描12321312312312312312述
另外一个lm.h即可包罗lm系列,一次满足
在这里插入图片描述

为了找到问题,将代码转移到VS上,得到如下报错:
在这里插入图片描述

错误 LNK2019无法解析的外部符号 _NetUserSetInfo@20,该符号在函数 “void __stdcall password(char * * const,int *)” (?password@@YGXQAPADPAH@Z) 中被引用

查阅
https://www.cnblogs.com/yangcs/p/5087490.html
博客基本得出结论:相应库文件找不到.
因为之前的函数都没有类似问题,一时间还找不出病炤
用该博主的说法,是因为NetUserSetInfo函数所在的头文件在项目属性的包含目录下,但是相应的库文件却不在项目属性的默认库目录里.
那么需要找到对应的库.
查阅
https://docs.microsoft.com/zh-cn/windows/win32/api/lmaccess/nf-lmaccess-netusersetinfo
后得到动态链接库为 Netapi32.dll

在VS里直接添加
#pragma comment(lib,“Netapi32.lib”)
后运行,成功.

接下来在DEV C++里面解决.
DEV C++并不会对#pragma comment(lib,“Netapi32.lib”)代码报错,但也不会有作用,#pragma系列指令是VS特有,而因为其是gcc编译器,故不行.
首先找到对应的库,对lmacess.h右键,打开文件夹,传送到头文件地址
在这里插入图片描述

传送到下图在这里插入图片描述

往前翻一下,到x86_64-w64-mingw32
在这里插入图片描述
点进lib

在这里插入图片描述
会发现其名字格式是lib+xxxx.a,利用文件搜索,搜索libN,范围过大,再搜索libNet,找到
在这里插入图片描述
OK,位置锁定.
回到DEV C++,上方项目-项目属性,发现灰色,因为只创建了cpp文件和h头文件,虽然能运行但并不是一个项目.新建一个项目文件夹,创建项目将其加入,点入项目属性-参数-加入库或者对象
在这里插入图片描述
根据刚才找到的位置,将libnetapi32.a加入,点击确定.重新编译,成功.

并不是一开始就直到是库文件缺席,也是磕磕绊绊才摸索出来的,希望下次碰到类似问题能够快速反应,为以后节省时间.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值