windows里面生成、链接库的正确姿势是怎样的?

jiandingzhe 2015-03-31 10:41:56
我以前一直在linux平台下搞。linux里面,静态库就是一个.a文件,就是一堆对象文件的包。用的时候:
gcc -o output_binary foo.cpp bar.o baz.a


动态库是一个.so文件,既用来运行的时候用,也用在链接的时候:
gcc -o output_binary foo.cpp bar.o -l baz


在windows里面,似乎静态库是.lib,动态库是.dll。但是我看SDL和GLEW库都为自己的dll提供了一个专门的lib,尺寸很小。链接的时候,需要用那个lib,运行的时候去用那个dll。那么这么看来,windows下链接总是对一个lib链接,而不是对一个dll链接?

我用cmake的时候,在windows下面,一个SHARED的library目标,只生成了dll,没有生成类似于SDL和GLEW那样的dll lib文件。然而在同一个项目里,如果想使用那个library目标,却又去依赖一个同名的lib文件,这个文件却没有生成。这是为什么?
...全文
156 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-03-31
  • 打赏
  • 举报
回复
搜“dll生成lib”
www_adintr_com 2015-03-31
  • 打赏
  • 举报
回复
引用 2 楼 jiandingzhe 的回复:
[quote=引用 1 楼 adlay 的回复:] 链接 dll 的那种 lib 可以由 def 文件生成, def 文件可以从 dll 中导出整理来得到
所以,链接dll的那个lib文件是必须的?[/quote] 如果使用 Loadlibary/GetProcAddress 的话就不需要 lib, 有 dll 就够了
jiandingzhe 2015-03-31
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
链接 dll 的那种 lib 可以由 def 文件生成, def 文件可以从 dll 中导出整理来得到
所以,链接dll的那个lib文件是必须的?
www_adintr_com 2015-03-31
  • 打赏
  • 举报
回复
链接 dll 的那种 lib 可以由 def 文件生成, def 文件可以从 dll 中导出整理来得到
jiandingzhe 2015-03-31
  • 打赏
  • 举报
回复
引用 3 楼 adlay 的回复:
[quote=引用 2 楼 jiandingzhe 的回复:] [quote=引用 1 楼 adlay 的回复:] 链接 dll 的那种 lib 可以由 def 文件生成, def 文件可以从 dll 中导出整理来得到
所以,链接dll的那个lib文件是必须的?[/quote] 如果使用 Loadlibary/GetProcAddress 的话就不需要 lib, 有 dll 就够了[/quote] 这我知道,运行时加载模块、查找符号表的话,连头文件都不用。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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