我有一个sample.dll文件和一个相应的sample.h头文件。我将两者都添加到引用中并在我的c ++代码中包含标题。该程序如何知道头文件对应于特定的.dll?
答案 0 :(得分:1)
这个程序如何知道头文件对应那个特定的.dll?
它没有!
基本上,当您编译程序时,编译器将在sample.h
中看到声明,并记下链接器,以便稍后在需要时找到相应的定义。
当链接程序时,链接器将查看您链接的所有DLL,库和其他目标文件,并尝试查找与编译器在文件中找到的所有声明相对应的定义,例如{ {1}},在您的情况下,它会在sample.h
中找到它们,因为这是编译它们的地方。
如果链接器找不到匹配的定义,或者找不到匹配的定义,那么这是一个错误,链接将失败。 这就是为什么你的程序不需要知道什么标头对应于什么特定的.dll,因为there is only have definition allowed对于每个这些声明都是如此,所以它可以随处查看直到它找到它。
答案 1 :(得分:0)
没有。但是,当您调用标头中定义的函数时,它会查找定义该函数的内容。如果foo.h
声明foo()
,并且foo.dll
包含foo()
的定义,则一切正常。