2012-05-23 23 views
0

我在這裏猛敲我的頭......試圖解決這些LNK2001錯誤。幫助頁面給了我很多原因,但我看不到哪一個適用。LNK2001 - 應該很容易解決..但我只是看不到它! (VS2005)

請問一個知識淵博的VS 2005 C++的人可以協助這些嗎?問我問題..有時幫助。如果我不害怕看起來像一個心理學家,我會得到一個橡皮鴨來解釋這個:-)但我坐在辦公室裏。

錯誤LNK2001:無法解析的外部符號 「結構ethernetParams_t * ethernetData_g」(ethernetData_g @@ 3PAUethernetParams_t @@?A) simple_Console.obj

我的代碼simple_console.cpp正試圖用一個結構在C中定義,但是#includes的工作方式和#stdafx超出了我的範圍。含ethernetParams_t頭被包含在stdafx.h中

#include "CON_ethernet_defs.h" 

請詢問了......是該位的線索後,@@?

回答

1

鏈接器告訴你,有一個未知的外部符號ethernetData_g,其類型爲struct ethernetParams_t *。原因是,雖然ethernetData_g在包含的標頭中聲明,但其定義來自另一個需要鏈接的目標文件。既然你不選擇恰當的目標文件鏈接,鏈接器無法找到合適的定義

你缺少必須來自你正試圖利用圖書館,所以看那個文件夾的obj在目標文件文件

1

爲了消耗別人開發的代碼(例如,通過使用你的情況靜態庫),你需要兩樣東西:

  1. 提供的功能(S)的簽名到您的項目(包括文件)
  2. 將函數的實現提供到您的項目中(li brary文件)

看起來你做了第一件事,但不是第二件事。這是如何解讀該接頭用在這個神祕的形式給出錯誤...

0

@Attila和@mox大概釘它:你需要包含函數的執行objlib文件(S鏈接) 您正在使用。

如果在解決方案資源管理器中右鍵單擊項目,單擊屬性,然後選擇鏈接器|輸入,您可以查看和編輯鏈接到的庫/對象文件的列表('其他依賴項')。

你說結構是用C而不是C++定義的,另一個可能的問題就是在包含文件中缺少extern "C",請參閱解釋here

相關問題