我想知道VC6.0中链接器是如何通过h文件知道对应的lib文件的比如我调用一个dll,将h文件include进来,设置好include files 以及library files 路径就编译链接了
那么我想知道程序调用了h文件中的函数,在链接时怎么知道要到那个lib文件中找到函数在DLL中的位置?
即h文件和lib文件是怎么关联的?难道通过一样的名称?
如果有两个库,其中有两个函数同名同参数但功能不同,分别在一个程序的不同地方包含两个库的头文件并调用这两个函数,编译器是怎样选择从哪个库中链接的?
那么我想知道程序调用了h文件中的函数,在链接时怎么知道要到那个lib文件中找到函数在DLL中的位置?
即h文件和lib文件是怎么关联的?难道通过一样的名称?
如果有两个库,其中有两个函数同名同参数但功能不同,分别在一个程序的不同地方包含两个库的头文件并调用这两个函数,编译器是怎样选择从哪个库中链接的?
解决方案 »
- 请教一个网络心跳包的问题
- 如何使整个窗体无效, 不是整个客户区,是整个窗体?
- SSL的证书问题
- 如何在C语言写的项目中加入C++写的类。高手帮忙!!!
- 新建一个MFC(exe)工程时,出现编辑窗口,如:1.rc - IDD_MY1_DIALOG(Dialog),将该窗口关闭以后,如
- 在DIALOG中如何区分消息WM_LBUTTONDOWN和ON_WM_LBUTTONDBLCLK
- 大家的vc有没有这样的奇怪问题?
- ATL的连接点对象
- 难题:创建子对话框,将子对话框中间部分显示到父对话框的指定区域内?
- 请问一个view类有4千行,应不算太多,可是为什么编辑操作很慢,
- 如何编程获知系统是否已经打上某个补丁
- vs2008怎么样编写不依赖.net的VC++程序
可能头文件里面有 #pragma comment(lib, "xxx.lib")
2.不是通过函数名,而是函数签名,cpp的重载机制就是基于函数签名不同的,呵呵
意思就是如果我用#pragma comment(lib, "xxx.lib")添加了多个lib文件,
那程序就在这多个lib文件中查找是否有某个lib文件中的函数跟本函数匹配,如果匹配再进行链接?
有可能
1.
如果是多个的话,估计会调用最先找到的匹配着,
也就是说,其他几个lib中的同名功能相异的函数就不能调用了。
2.
也可能出现编译器被你唬弄了,反过来唬弄你,随机调用,不确定。你可以在lib的函数内添加输出信息尝试一下,用MessageBox。
而不是在链接前就知道这个头文件里面的函数要连接某个特定的lib文件?
搂主要自己尝试一下了,如果真是 marrco2005所说的那样,那就是编译链接后才知道对应的函数是否有重复或者匹配了。相似的情况,如果在lib内有一个函数是void get(int n);
而在工程内,某个cpp文件内也有一个 void get(int n);
链接的时候就会报错!