[英]32-bit to 64-bit : LNK2019 error, how to retrieve relevant information
我正在使用32位C ++應用程序,正在將其轉換為64位應用程序(只需選擇其他配置,復制並修改所有相關設置,然后嘗試進行構建),現在我陷入了困境關於鏈接器錯誤LNK2019 "unresolved external symbol ... referenced in function ..."
,我想獲取更多信息:
我已經重新構建了32位應用程序,並且找到了所引用的函數,但是當我按F12,Shift + F12或Ctrl + F12時,我看不到從哪里檢索實現。
我認為該函數的實現位於DLL內部,但是我想確定一下(一旦確認,我可以查找相應的設置,定義位置,然后將此設置復制到我的64位配置中)。
也許可以通過以下方式重新構造該問題:如果從DLL中檢索到函數,是否可以知道在哪個DLL中實現了該函數?
漢斯(Hans),關於* .map文件的建議可以幫助您節省生命:這使我知道可以在哪個文件中找到上述功能。
顯然,這還沒有結束:提到的文件是一個DLL,雖然沒有指向DLL本身的引用,但沒有指向LIB文件的引用,而LIB文件則重定向到DLL。
如果這還不夠困難:函數本身是__imp_
函數,並且似乎有一個陷阱:
__imp__
函數(在imp
之后觀看兩個下划線) __imp_
函數(在imp
之后觀看單個下划線) 最后,我通過檢查構建輸出(比較LIB=
和PATH=
條目並確保它們在兩種情況下都相似)解決了該問題:當在一個輸出中引用32位庫時,應該引用其他輸出中的64位庫)。
在32位輸出中,我看到鏈接器引用的是lib,而在64位鏈接的情況下,他沒有這樣做:我在項目的配置中添加了相應的lib(配置屬性,鏈接器,輸入,附加依賴項),這終於解決了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.