我用Loadlibrary
andGetprocaddress
来链接一些WinApis来进行运行时链接。正如预期的那样,它工作正常。
但是对于某些 API,我只是用作-ldllname
编译器选项。相同的选项会为某些 API 提供链接器错误,并且需要加载 dll。
这有什么特别的区别吗,即某些特定的 API 需要运行时链接,而其他 API 可以使用-ldllname
选项?如何对这类 API 进行分类?
更新:我观察到的是支持 UNICODE 和 ANSI 的 API,即后缀为 "W" 和 "A" 的 API,通过静态链接本身得到解决?我对么?如果我错了,请纠正我!
为什么有些 API 需要运行时链接,而另一些则通过静态链接本身(-l 选项)解决?这有什么原因吗?