在鏈接器設置中,您應該告訴編譯器哪些.lib文件要包含。我還沒有想到的一件簡單的事情是,如何知道使用第三方軟件時哪個函數在哪個.lib文件中?你如何找到哪個.lib文件使用哪個函數?
例子:我最近使用Qt具有的.lib文件數量龐大 。在嘗試使用最明顯的名稱之後,我必須通過反覆試驗來完成它們,直到找到正確的名稱。我認爲這些信息將在Qt的文檔中,但未能找到它。我仍然是一個初學者,自我教導,所以有時候這樣簡單的事情會讓我失望。
在鏈接器設置中,您應該告訴編譯器哪些.lib文件要包含。我還沒有想到的一件簡單的事情是,如何知道使用第三方軟件時哪個函數在哪個.lib文件中?你如何找到哪個.lib文件使用哪個函數?
例子:我最近使用Qt具有的.lib文件數量龐大 。在嘗試使用最明顯的名稱之後,我必須通過反覆試驗來完成它們,直到找到正確的名稱。我認爲這些信息將在Qt的文檔中,但未能找到它。我仍然是一個初學者,自我教導,所以有時候這樣簡單的事情會讓我失望。
有兩種基本方法。
第一個選項是閱讀的第三方庫文件(微軟非常擅長此道 - 他們包括您在每個功能所需要的庫和頭看起來Qt是不太好。)
第二個選項是按照here中所述的方式,使用DUMPBIN列出每個庫中的名稱。
正如評論指出,第二個選項的變體是到grep .lib文件的函數名的純文本。這將告訴你哪些.lib文件要麼定義函數,要麼調用它。如果只有一個,你就完成了;如果不止一個,你將不得不在所有返回的文件上運行DUMPBIN來查看哪個定義了它。
是的,當然我們可以爲每個'somelib.lib'運行'link.exe -dump/EXPORTS「somelib.lib」> somelib.log'但是如果if我們有很多庫?爲每一個做這個?包含LIB文件作爲是純文本函數名(可裝飾 - 在開始和結束額外的符號,但根爲的就是讓快速而簡便的方法 - 簡單地搜索文件,接觸'somefunc'名(區分大小寫) – RbMm
是,對於每一個lib都會這樣做,我對搜索二進制代碼的文本感到很緊張(是的,是的,我知道它是有效的 - 它對我來說並不感覺乾淨)還要注意,如果.lib *調用*函數,而不是*定義*它。 –
我們需要按原樣搜索純文本(函數名稱),通常所有的lib放在同一個文件夾中,所以搜索所有帶myfunction函數的* .lib文件 - 工作速度非常快。如果將超過1個結果(很少) - 已經可以更詳細地查找建立的庫 – RbMm
你可以簡單地在* .lib文件中搜索函數的名字 – RbMm