2011-08-16 223 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

相关问题