3

我从http://www.pixel-technology.com/freeware/tessnet2/下载了 Tessnet2 项目,我可以在 Visual Studio 2008 中很好地构建它。但是,我需要为 .NET 4 重新编译它。我非常了解关于 C++ 的内容很少,但是当我尝试使用 VS 2010 进行编译时遇到的错误是:

错误 4 错误 C2439: 'std::_Pair_base<_Ty1,_Ty2>::first' : 无法初始化成员 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility 163 1 tessnet2

错误 6 错误 C2439: 'std::_Pair_base<_Ty1,_Ty2>::second' : 无法初始化成员 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility 163 1 tessnet2

错误 3 错误 C2440: 'initializing' : 无法从 'int' 转换为 'ScrollView *' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility 163 1 tessnet2

错误 5 错误 C2440:“正在初始化”:无法从“int”转换为“SVEvent *”C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility 163 1 tessnet2

我假设您不能只在 2010 年打开一个 2008 年的 C++ 项目,然后像大多数实际的 .NET 项目一样进行简单的转换。但是,如果有人可以让我对此有所了解,我将不胜感激。

4

1 回答 1

2

我有同样的问题。

似乎 VS2010 编译器比 VS2008 更严格地将 NULL 定义为文字 0。因此,您必须将此项目中的 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);
于 2012-01-06T20:09:21.420 回答