簡體   English   中英

找不到C ++符號

[英]C++ Symbols not found

我正在嘗試編譯3個項目:

  • 靜態庫(.lib)
  • 使用靜態庫的.lib的動態庫(.dll)。
  • 使用動態libaray的.dll的應用程序(.exe)

但是,當嘗試編譯.exe並設置斷點時,出現警告“該斷點當前不會被命中。沒有為該文檔加載任何符號。”
好吧,我知道Visual Studio以某種方式缺少.pdb文件。 但是,我不明白為什么Visual Studio找不到它。

  • 靜態庫的.pdb文件正在生成,並且與.lib位於同一文件夾中。
  • 動態庫引用了靜態庫的.lib和.pdb所在的文件夾。 在為動態庫創建.dll的同一文件夾中創建一個.pdb文件。
  • 在編譯到生成.exe的文件夾之前,應用程序將復制動態庫的.dll和.pdb。

盡管如此,Visual Studio仍在抱怨它沒有加載任何符號。 在輸出控制台中,它還告訴我它已加載.exe和.dll的符號,但未加載.lib的符號。 我有點想念嗎?

編譯.exe時,您仍應鏈接到在編譯.dll時生成的.lib文件(因此,我所說的是動態庫附帶的.lib,而不是靜態庫附帶的.lib。 )。

根據您的Visual Studio版本,您可以在此處進行配置:項目->屬性->配置屬性->鏈接器>輸入->其他依賴關系

什么版本的Visual Studio? 所有項目都在同一個解決方案中嗎? 如果是這樣,只需將庫添加為對DLL的引用 ,並將DLL添加為對EXE的引用 然后,Visual Studio會處理所有鏈接,並且.exe​​,.dll和.pdb文件應該都在解決方案輸出目錄中。

另外,如果使用LoadLibrary加載DLL,調試器將不會加載調試信息,並且直到加載DLL后才知道在DLL中設置斷點的位置,這也可能導致您看到的錯誤。

暫無
暫無

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

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