Попытка скомпилировать проект Tessnet2 (Visual Studio 2008 C ++) в Visual Studio 2010 - PullRequest
3 голосов
/ 17 августа 2011

Я загрузил проект Tessnet2 с http://www.pixel -technology.com / freeware / 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: «инициализация»: невозможно преобразовать из «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

Я предполагаю, что вы не можете просто открыть проект C ++ 2008 в 2010 году и выполнить простое преобразование, как в большинстве реальных проектов .NET. Но если кто-нибудь может дать мне некоторое представление об этом, я ценю это.

1 Ответ

2 голосов
/ 07 января 2012

У меня была такая же проблема.

Похоже, что компилятор 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);
...