2012-04-17 154 views
2

當我生成一個具有靜態庫輸入(.lib)的項目時,出現此錯誤。問題是,我可以在調試成功運行該項目,但不能在發佈運行mode.It顯示了錯誤的....VS2005 nafxcw.lib(appcore.obj):error LNK2001:無法解析的外部符號___argv

nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv 
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc 

請幫我解決這個問題。

+0

你不能運行它,或者你不能建立它嗎? – 2012-04-17 23:43:12

+0

在Debug vs. Release中可能與您的項目設置有關。打開項目 - >設置菜單並比較兩個設置。特別注意鏈接器下的設置。 – bpatrao 2012-04-17 23:46:03

回答

1

Microsoft's KB Q166504會爲你提供了答案:

當構建一個MFC應用程序或DLL,你需要確保所有的 相關庫是同步的:

  • 如果您已選擇在共享庫中使用MFC構建應用程序,則還必須使用運行時(MSVCRT.DLL)的動態版本。
  • 如果您已選擇構建調試MFC應用程序,那麼您還必須使用C運行時的調試版本。同樣,版本 MFC應用程序必須使用C運行時的非調試版本。
  • 如果您的調試MFC應用程序使用擴展DLL,則每個擴展DLL也必須是調試版本。同樣,發佈應用程序必須匹配 發行版擴展DLL。 C運行時庫的類型是固定的。 擴展DLL和使用它們的應用程序必須全部使用MFC共享庫,該庫需要DLL的動態DLL版本。
  • 如果您要鏈接到任何也鏈接到MFC或CRT的靜態庫,應確保每個靜態庫與 應用程序共享相同的屬性(調試/版本,CRT靜態/動態)。

解決方案

要改變由應用程序或 DLL使用C運行時庫的類型,去生成/項目設置屬性表,並切換到 C/C++標籤。在C/C++頁面上,選擇「代碼生成」類別。 更改「使用運行時庫」列表框的值。仔細注意 注意使這個具體爲每個配置;只有一個 的配置,比如「Win32(80x86)調試」,應該選擇 你改變這個值。

  • 調試,共享庫MFC應用程序 - 「調試多線程DLL」。

  • 發佈共享庫MFC應用程序 - 「Multithread Dll」。

  • 調試,靜態庫MFC應用程序 - 「調試多線程」。

  • 釋放靜態庫MFC應用程序 - 「多線程」。

相關問題