C2440 'инициализация': невозможно преобразовать int в unsigned char * в служебном файле Microsoft VS 2010 - PullRequest
1 голос
/ 25 июля 2011

Когда я компилирую свой проект VS 2010 C ++, следующий отрывок вызывает ошибку в файле c: \ program files \ microsoft visual studio 10.0 \ vc \ include \ utility

template<class _Other1,
    class _Other2>
    _Pair_base(_Other1&& _Val1, _Other2&& _Val2)
    : first(_STD forward<_Other1>(_Val1)),
        second(_STD forward<_Other2>(_Val2))
    {   // construct from moved values
    }

После ошибки следуетдругая ошибка C2439 'std :: _ Pair_base .. :: первый элемент не может быть преобразован'

(все ошибки переведены с немецкого, поэтому они могут звучать немного по-другому на английском)

Я пытаюсьчтобы скомпилировать проект AxCrypt на VS 2010, файлы проекта были автоматически преобразованы из VS 2008 (но я не знаю, будет ли он работать там, у меня только VS 2010).

Ответы [ 2 ]

1 голос
/ 26 июля 2011

Проблема была в используемой библиотеке Crypto ++, которая требует двух небольших модификаций перед компиляцией на VS 2010.

a) pubkey.h line 243: 
return HashIdentifier(NULL, 0); 
-> 
return HashIdentifier((const byte*)NULL, 0); 
b) zdeflate.cpp line 389 
#if defined(_STDEXT_BEGIN) && !(defined(_MSC_VER) && _MSC_VER < 1400) 
&& !defined(_STLPORT_VERSION) 
-> 
#if defined(_STDEXT_BEGIN) && !(defined(_MSC_VER) && (_MSC_VER < 1400 
|| _MSC_VER >= 1600)) && !defined(_STLPORT_VERSION) 

Подробнее здесь: http://groups.google.com/group/cryptopp-users/browse_thread/thread/714f3ec6287a50b1

0 голосов
/ 25 июля 2011

Этот код может воспроизвести эту ошибку:

pair<int,char*> aPair(10,20);

Поскольку second указанный мной тип имеет char*, но я передаю int, который нельзя преобразовать в char*.

Обратите внимание, что это упрощенный пример ошибки, с которой вы можете столкнуться. Возможно, вы используете map.

...