缺少.lib文件,动态链接混乱

时间:2015-03-10 18:29:51

标签: c++ linker g++ eclipse-cdt

根据此question

动态链接在运行时由操作系统完成。

到目前为止,使用g ++与eclipse CDT,我静态链接odbc32.lib我从Windows SDK获得一些ODBC函数到我的程序。但我偶然删除了该文件,并惊讶地发现我的程序仍在运行并连接到数据库。由于文件不再存在我指定给-L选项的路径,我认为它必须仍然存在于路径的一个子文件夹中。但后来我删除了库路径,看看会发生什么,但我的程序仍然有效!我开始搜索odbc32.lib,我真的找不到它。但是,我确实找到了位于C:\ Windows \ System32中的odbc32.dll文件,我认为它可能会动态链接到我的程序。

  • 如果我是对的,当我从未指定C:\ Windows \ System32作为我的库路径时,编译器如何找到odbc32.dll?
  • 为了测试我的理论,我开始在system32文件夹中获取许多.dll文件,并使用-llibrary链接它们。我设法链接了一些我得到的文件,因为我的程序运行成功,但链接器找不到某些文件,为什么会这样?

我是对的吗?这是动态链接的一个例子吗?

注意:我也从我的路径中删除了C:\ Windows \ System32,但由于某种原因,它仍在工作。

1 个答案:

答案 0 :(得分:0)

根据您的评论,您声明自己正在使用g++ cygwin。基本上这意味着链接现在完成,因为它在linux(或unix或其他)上,并且需要一个库。在你的情况下,这是静态库,因此它在编译时链接,并且不再需要它。