请问为什么#pragma comment (lib, "ws2_32.lib")不成功?

六道佩恩 2018-10-23 04:13:53
之前写爬虫的时候,这个调用一直不成功(dll已经复制到当前文件夹里了),最后只能用命令行的形式调用.a库。工具是dev和gcc,我想知道为什么会出错,别人示例应该是用的vs,运行是成功的。难道gcc不能这样调用lib库吗?
...全文
2324 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
林多 2018-11-01
  • 打赏
  • 举报
回复
引用 7 楼 weixin_39158150 的回复:
[quote=引用 6 楼 zxc024000 的回复:]
[quote=引用 5 楼 weixin_39158150 的回复:]
[quote=引用 4 楼 zxc024000 的回复:]
[quote=引用 2 楼 weixin_39158150 的回复:]
[quote=引用 1 楼 zxc024000 的回复:]
GCC应该是没有#pragma comment (lib, xxxx),这种用法的。至少现在用的5.x版本没有看到,不知道以后会不会支持。
一般gcc都是使用-lxxx,这种的(这句话,本身就等同于#pragma comment)。

#pragma引用lib库是clang的用法吗?还有就是,gcc可以引用lib吗?[/quote]

#pragma comment (lib, xxxx) 这种是VS的用法,也就是微软的那一套(CL编译器)
clang用过些,遵循的GUN那一套,比gcc/g++编译得快,引用lib方式和gcc/g++差不多的。
gcc直接引用xxx.lib的话,应该是不可以的。需要转成.a,去引用。

.lib和.dll是windows的,.so和.a是UNIX(Linux)的。两者应该不是通用的,否则Windows和Unix就可以无缝兼容了。[/quote]

gcc不是可以通过windows API 同dll吗?[/quote]

你说的是gcc编dll吧,确实可以编给windows调用(好像编译链接时,加什么参数吧),但应该不能包含Linux独有的api吧。反过来,Windows使用CL编出来的dll,给Linux下的gcc调用,还是需要转一下吧(不包含Window独有的API)。。。Windows版的GCC(mingw)没有用过。

总之,不管怎么说,直接调用应该是不可以的(啥也不做),怎么也需要转一下。就像你最上面提出的问题,转一下.a(静态库),就好使了。
[/quote]
也就是说,gcc也是可以用lib和dll,只要编译的过程中不出现另一个操作系统的api,而只用同一种api就可以了是吗?[/quote]
理论上是可以的,只不过有些时候需要转一下。但是实际中,在项目里,很少看到有这么用的。。。
六道佩恩 2018-11-01
  • 打赏
  • 举报
回复
引用 6 楼 zxc024000 的回复:
[quote=引用 5 楼 weixin_39158150 的回复:]
[quote=引用 4 楼 zxc024000 的回复:]
[quote=引用 2 楼 weixin_39158150 的回复:]
[quote=引用 1 楼 zxc024000 的回复:]
GCC应该是没有#pragma comment (lib, xxxx),这种用法的。至少现在用的5.x版本没有看到,不知道以后会不会支持。
一般gcc都是使用-lxxx,这种的(这句话,本身就等同于#pragma comment)。

#pragma引用lib库是clang的用法吗?还有就是,gcc可以引用lib吗?[/quote]

#pragma comment (lib, xxxx) 这种是VS的用法,也就是微软的那一套(CL编译器)
clang用过些,遵循的GUN那一套,比gcc/g++编译得快,引用lib方式和gcc/g++差不多的。
gcc直接引用xxx.lib的话,应该是不可以的。需要转成.a,去引用。

.lib和.dll是windows的,.so和.a是UNIX(Linux)的。两者应该不是通用的,否则Windows和Unix就可以无缝兼容了。[/quote]

gcc不是可以通过windows API 同dll吗?[/quote]

你说的是gcc编dll吧,确实可以编给windows调用(好像编译链接时,加什么参数吧),但应该不能包含Linux独有的api吧。反过来,Windows使用CL编出来的dll,给Linux下的gcc调用,还是需要转一下吧(不包含Window独有的API)。。。Windows版的GCC(mingw)没有用过。

总之,不管怎么说,直接调用应该是不可以的(啥也不做),怎么也需要转一下。就像你最上面提出的问题,转一下.a(静态库),就好使了。
[/quote]
也就是说,gcc也是可以用lib和dll,只要编译的过程中不出现另一个操作系统的api,而只用同一种api就可以了是吗?
林多 2018-10-24
  • 打赏
  • 举报
回复
引用 2 楼 weixin_39158150 的回复:
[quote=引用 1 楼 zxc024000 的回复:]
GCC应该是没有#pragma comment (lib, xxxx),这种用法的。至少现在用的5.x版本没有看到,不知道以后会不会支持。
一般gcc都是使用-lxxx,这种的(这句话,本身就等同于#pragma comment)。

#pragma引用lib库是clang的用法吗?还有就是,gcc可以引用lib吗?[/quote]

#pragma comment (lib, xxxx) 这种是VS的用法,也就是微软的那一套(CL编译器)
clang用过些,遵循的GUN那一套,比gcc/g++编译得快,引用lib方式和gcc/g++差不多的。
gcc直接引用xxx.lib的话,应该是不可以的。需要转成.a,去引用。

.lib和.dll是windows的,.so和.a是UNIX(Linux)的。两者应该不是通用的,否则Windows和Unix就可以无缝兼容了。
林多 2018-10-24
  • 打赏
  • 举报
回复
引用 5 楼 weixin_39158150 的回复:
[quote=引用 4 楼 zxc024000 的回复:]
[quote=引用 2 楼 weixin_39158150 的回复:]
[quote=引用 1 楼 zxc024000 的回复:]
GCC应该是没有#pragma comment (lib, xxxx),这种用法的。至少现在用的5.x版本没有看到,不知道以后会不会支持。
一般gcc都是使用-lxxx,这种的(这句话,本身就等同于#pragma comment)。

#pragma引用lib库是clang的用法吗?还有就是,gcc可以引用lib吗?[/quote]

#pragma comment (lib, xxxx) 这种是VS的用法,也就是微软的那一套(CL编译器)
clang用过些,遵循的GUN那一套,比gcc/g++编译得快,引用lib方式和gcc/g++差不多的。
gcc直接引用xxx.lib的话,应该是不可以的。需要转成.a,去引用。

.lib和.dll是windows的,.so和.a是UNIX(Linux)的。两者应该不是通用的,否则Windows和Unix就可以无缝兼容了。[/quote]

gcc不是可以通过windows API 同dll吗?[/quote]

你说的是gcc编dll吧,确实可以编给windows调用(好像编译链接时,加什么参数吧),但应该不能包含Linux独有的api吧。反过来,Windows使用CL编出来的dll,给Linux下的gcc调用,还是需要转一下吧(不包含Window独有的API)。。。Windows版的GCC(mingw)没有用过。

总之,不管怎么说,直接调用应该是不可以的(啥也不做),怎么也需要转一下。就像你最上面提出的问题,转一下.a(静态库),就好使了。
六道佩恩 2018-10-24
  • 打赏
  • 举报
回复
引用 4 楼 zxc024000 的回复:
[quote=引用 2 楼 weixin_39158150 的回复:]
[quote=引用 1 楼 zxc024000 的回复:]
GCC应该是没有#pragma comment (lib, xxxx),这种用法的。至少现在用的5.x版本没有看到,不知道以后会不会支持。
一般gcc都是使用-lxxx,这种的(这句话,本身就等同于#pragma comment)。

#pragma引用lib库是clang的用法吗?还有就是,gcc可以引用lib吗?[/quote]

#pragma comment (lib, xxxx) 这种是VS的用法,也就是微软的那一套(CL编译器)
clang用过些,遵循的GUN那一套,比gcc/g++编译得快,引用lib方式和gcc/g++差不多的。
gcc直接引用xxx.lib的话,应该是不可以的。需要转成.a,去引用。

.lib和.dll是windows的,.so和.a是UNIX(Linux)的。两者应该不是通用的,否则Windows和Unix就可以无缝兼容了。[/quote]

gcc不是可以通过windows API 同dll吗?
smwhotjay 2018-10-23
  • 打赏
  • 举报
回复
-lpthread 这种。遵守对应工具的规则即可。
六道佩恩 2018-10-23
  • 打赏
  • 举报
回复
引用 1 楼 zxc024000 的回复:
GCC应该是没有#pragma comment (lib, xxxx),这种用法的。至少现在用的5.x版本没有看到,不知道以后会不会支持。
一般gcc都是使用-lxxx,这种的(这句话,本身就等同于#pragma comment)。

#pragma引用lib库是clang的用法吗?还有就是,gcc可以引用lib吗?
林多 2018-10-23
  • 打赏
  • 举报
回复
GCC应该是没有#pragma comment (lib, xxxx),这种用法的。至少现在用的5.x版本没有看到,不知道以后会不会支持。
一般gcc都是使用-lxxx,这种的(这句话,本身就等同于#pragma comment)。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧