我的代码如何知道它会解决哪个.dll?

时间:2015-03-05 20:40:57

标签: c++ dll header

我有一个sample.dll文件和一个相应的sample.h头文件。我将两者都添加到引用中并在我的c ++代码中包含标题。该程序如何知道头文件对应于特定的.dll?

2 个答案:

答案 0 :(得分:1)

  

这个程序如何知道头文件对应那个特定的.dll?

它没有!

基本上,当您编译程序时,编译器将在sample.h中看到声明,并记下链接器,以便稍后在需要时找到相应的定义。

当链接程序时,链接器将查看您链接的所有DLL,库和其他目标文件,并尝试查找与编译器在文件中找到的所有声明相对应的定义,例如{ {1}},在您的情况下,它会在sample.h中找到它们,因为这是编译它们的地方。

如果链接器找不到匹配的定义,或者找不到匹配的定义,那么这是一个错误,链接将失败。 这就是为什么你的程序不需要知道什么标头对应于什么特定的.dll,因为there is only have definition allowed对于每个这些声明都是如此,所以它可以随处查看直到它找到它。

答案 1 :(得分:0)

没有。但是,当您调用标头中定义的函数时,它会查找定义该函数的内容。如果foo.h声明foo(),并且foo.dll包含foo()的定义,则一切正常。