2012-05-11 27 views
0

鏈接的問題我得到這些錯誤:VS2010上的ostream

1>test.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall  std::basic_ofstream<char,struct std::char_traits<char> >::`vbase destructor'(void)" (__imp_??_D? [email protected][email protected]@[email protected]@@[email protected]@QAEXXZ) referenced in function _main 
1>test.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::basic_ofstream<char,struct std::char_traits<char>>(void)" ([email protected][email protected]@[email protected]@@[email protected]@[email protected]) referenced in function _main 

這個測試代碼工作正常:

int main(int argc, char **argv) 
{ 
    std::ofstream game_record_output; 
} 

,直到我包括從舊項目從VS轉換一個.H 2003 .NET

首先,我認爲這可能與此相關的一些問題:

http://msdn.microsoft.com/en-us/library/8h8eh904(v=vs.90).aspx

但後來,我已經檢查了剛剛MSVCRT.LIB和MSVCPRT.LIB目前正在聯繫,所以舊的iostream沒有被鏈接...

我不知道爲什麼發生這種情況,我假設包含鏈中包含一些錯誤的文件,但我已經搜索舊的iostream .h文件的include鏈(即:(fstream.h,iomanip.h,ios.h,iostream.h ,istream.h,ostream.h,streamb.h和strstrea.h))

那麼,還有什麼我應該檢查?

該項目使用MFC。根據這C/C++ -> Code Generation -> Runtime Library

+1

測試代碼看起來不完整的,順便說一句。缺少標題。 – mloskot

+0

很抱歉的頭,如果我用這個: 的#include 它按預期工作 但是當我補充一點,我以後會需要我的依賴關係之一,它開始給它已經設置的鏈接erorrs – Vando

回答

0

更改您的Visual Studio項目Properties設置:

  • 多線程調試DLL(/ MDD)的調試配置
  • 多線程的Release配置
  • DLL(/ MD)
+0

。 ..但它不會使其正常工作:/ – Vando

+1

檢查包含的.h文件是否未設置任何雜注並且不導入任何C/C++運行時庫。重建。 – mloskot

+0

有一些這樣的:的#pragma評論(LIB,「Msacm32.lib」)和我已經源,我應該尋找一些特殊其他的.lib庫?或以這種方式導入的任何lib,是一個問題?謝謝! – Vando

0

此頁面包含LNK2019的一些原因:https://msdn.microsoft.com/en-us/library/799kze2z.aspx。特別是,從VS 2003升級可能會引發此問題:

構建依賴關係僅在 解決方案中定義爲項目依賴關係。在早期版本的Visual Studio中,此級別的依賴關係就足夠了。但是,從Visual Studio 2010開始, Visual Studio需要項目到項目的引用。如果您的項目 沒有項目對項目的引用,您可能會收到此 鏈接器錯誤。添加一個項目到項目的引用來修復它。

或本

你混合使用原生的wchar_t與代碼不編碼。 C++ 在Visual C++ 2005中完成的語言一致性工作默認爲 wchar_t爲本機類型。您必須使用/ Zc:wchar_t- 編譯器選項生成與使用較早版本的Visual C++編譯的模塊 兼容的代碼。如果不是所有模塊都已使用相同的/ Zc:wchar_t設置編譯爲 ,則類型引用可能不會解析爲兼容的類型 。驗證所有 模塊中的wchar_t類型是否兼容,可以通過在編譯時使用一致的/ Zc:wchar_t設置來更新所使用的類型或 。