2011-08-16 221 views
3

我從http://www.pixel-technology.com/freeware/tessnet2/下載了Tessnet2項目,我可以在Visual Studio 2008中很好地構建它。但是,我需要重新編譯它。我對C++知之甚少,但是當我嘗試使用VS 2010進行編譯時遇到的錯誤有:試圖在Visual Studio 2010中編譯Tessnet2(Visual Studio 2008 C++)項目

錯誤4錯誤C2439:'std :: _ Pair_base < _Ty1,_Ty2> :: first':member could not被初始化C:\ Program Files文件(x86)\ Microsoft Visual Studio 10.0 \ VC \ include \實用程序163 1 tessnet2

錯誤6錯誤C2439:'std :: _ Pair_base < _Ty1,_Ty2> :: second':member could不被初始化C:\ Pro C:程序文件(x86)\ Microsoft Visual Studio 10.0 \ VC \ include \實用程序163 1 tessnet2

錯誤3錯誤C2440:'初始化':無法從'int'轉換爲'ScrollView *'C:\ Program Files )\ Microsoft Visual Studio 10.0 \ VC \ include \ utility 163 1 tessnet2

錯誤5錯誤C2440:'initializing':無法從'int'轉換爲'SVEvent *'C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ include \ utility 163 1 tessnet2

我假設你不能在2010年打開一個2008 C++項目,並做一個像大多數實際的.NET項目一樣的簡單轉換。但是,如果任何人都可以給我一些見解,我很欣賞它。

回答

2

我有同樣的問題。

看來,VS2010編譯器更嚴格的是NULL被定義爲一個字面值0,而不是VS2008。因此,您必須明確地將此項目中的NULL引用轉換爲其相應的類類型。

具體而言,您必須進行以下四個轉變到scrollview.cpp文件拿到項目進行編譯:

- 更改行137

std::pair<ScrollView*, SVEventType> awaiting_list_any_window(NULL, 
                  SVET_ANY);               

std::pair<ScrollView*, SVEventType> awaiting_list_any_window((ScrollView*)NULL, 
                  SVET_ANY); 

- 換行409

waiting_for_events[ea] = std::pair<SVSemaphore*, SVEvent*> (sem, NULL); 

waiting_for_events[ea] = std::pair<SVSemaphore*, SVEvent*> (sem, (SVEvent*) NULL); 

- 更改行427

std::pair<ScrollView*, SVEventType> ea(NULL, SVET_ANY); 

std::pair<ScrollView*, SVEventType> ea((ScrollView*)NULL, SVET_ANY); 

- 更改行429

waiting_for_events[ea] = std::pair<SVSemaphore*, SVEvent*> (sem, NULL); 

waiting_for_events[ea] = std::pair<SVSemaphore*, SVEvent*> (sem, (SVEvent*) NULL); 
+0

會不會使用'nullptr_t'而非NULL得到相同的結果,而不比較難看投? – Voo

+0

@Voo我從來沒有使用過nullptr_t,但是當我嘗試用它替換NULL時,我剛剛得到了一個「錯誤:類型名稱是不允許的」。 – depthfirstdesigner

+0

我假設你也嘗試過'std :: nullptr_t'?奇怪的是,我認爲如果他們在定義中有一個指針,而不是一個整數,這將起作用 - 奇怪,但是我離那裏的專家很遠。 – Voo

相關問題