我以前一直在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文件,这个文件却没有生成。这是为什么?