簡體   English   中英

32位到64位:LNK2019錯誤,如何檢索相關信息

[英]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_函數,並且似乎有一個陷阱:

  • 32位: __imp__函數(在imp之后觀看兩個下划線)
  • 64位: __imp_函數(在imp之后觀看單個下划線)

最后,我通過檢查構建輸出(比較LIB=PATH=條目並確保它們在兩種情況下都相似)解決了該問題:當在一個輸出中引用32位庫時,應該引用其他輸出中的64位庫)。
在32位輸出中,我看到鏈接器引用的是lib,而在64位鏈接的情況下,他沒有這樣做:我在項目的配置中添加了相應的lib(配置屬性,鏈接器,輸入,附加依賴項),這終於解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM