Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > unordered_map Visual Studio 2012


Автор: Yulo 15.9.2013, 22:08
Пытаюсь перейти на VS 2012 c VS 2010,
проект откомпилировался, но при запуске вылетает по ошибке.
Оказалось никак не хочет добавлять в контейнер
unordered_map

создал простой тест, у кого-нибудь это работает?

Код

#include "stdafx.h"
#include <unordered_map>
#include <string>
using namespace std;
typedef unordered_map<string, int> Nodes;
int _tmain(int argc, _TCHAR* argv[]){
  Nodes nn;
  nn.emplace(make_pair("aaa", 0));
  return 0; }


Чтобы поставить VS 2012 установил Win7, обновил.
VS 2012 тоже обновил.
Ошибка выскакивает:

Необработанное исключение по адресу 0x00D0E951 в ConsoleApplication1.exe: 0xC000001D: Illegal Instruction.


опытные люди, подскажите в чем проблема?
В VS 2010 работало

Может кто-нибудь скопировать и вставить в VS 2012.
Потом запустить.

Может у меня криво студия встала.
с vector-ом, например все хорошо. 

Автор: akizelokro 16.9.2013, 02:20
"VS 2012 unordered map" в Яндексе.
А нефикх каждые два года новый компилятор писать. Я понимаю, что это коммерчески выгодно.. Но косяки будут без конца, жди сервисПак

Добавлено через 10 минут и 6 секунд
А если честно, то я и за 2011 год ещё видел какую-то очередную "нехилую" версию Студии. называлась VS 2011 чёрт те что там вспомнишь, но тоже уже только у двух дилеров найдёшь. Ребятки решили играть в плане СтивДжобса.. пусть играют.

Добавлено через 12 минут и 4 секунды
Я чуть в осадок не выпал, когда мне потенциальный заказчик по штатовскому фрилансу решил прислать приглашение к обсужденю по 2011.

Автор: maxim1000 16.9.2013, 07:33
Попробовал у себя на Express версии в Debug и Release - работает. Установлено 2-е обновление. Может, действительно, что-то не так поставилось.

Касательно стабильности компилятора - у меня на работе мы перешли с 2010-й, кода много, есть и старый, и новый. Проблем с компилятором не припоминаю.

Автор: Yulo 16.9.2013, 09:06
Спасибо, ребята, за отклик.

Я только впервые поставил Вин7 и VS 2012 на нее.
Может что и накосячил, хотя врод бы все было нормально.
Дал обновиться и винде и Студии.
Что странно, в свойствах проекта стоит
"Общие свойства" - "Целевая среда: .NETFramework, Version=v4.0"
Создавая проект я выбираю версию 4.5.
Возможно в этом дело..

Автор: maxim1000 16.9.2013, 10:34
Ну не знаю, насколько полно поддерживается C++ для проектов под .Net... Я бы ожидал, что unordered_map даже не скомпилится.

Чтобы использовать C++ полностью, нужно создать C++-приложение, например, Visual C++/Win32 Console Application.

Автор: Yulo 16.9.2013, 23:47
Если я создаю проект  Visual C++/Win32 Console Application,
то выше указанная программа вылетает по ошибке.

Если создать проект  Visual C++/CLR Console Application,
то нормально работает.

В первом случае получается "Целевая среда: .NETFramework, Version=v4.0"
во втором "Целевая среда: .NETFramework, Version=v4.5"

Автор: maxim1000 17.9.2013, 09:00
Если целевая среда - .NETFramework, (неважно какой), значит, что-то не так создалось точно. Возможно, из-за каких-либо действий после создания проекта он становится CLR. cs-файлы не добавляются?

Автор: Yulo 17.9.2013, 23:06
Вообще мне .NetFraimwork не нужен. Я им не пользуюсь.
Собираюсь потом на Linux переносить.
cs-файлы, это вроде c#?

Я работаю с одним проектом. Создал его два года назад в VS2010.
Основная работа на с++. В тонкостях студии не приходилось разбираться.
Спасибо за советы. Пока ситуация не исправилась.

Переустанавливать Студию пока не решаюсь, пол дня ставил, включая обновления.
На работе комп помощнее, но пока там 2010-я студия стоит.

Автор: Yulo 22.9.2013, 21:48
На работе поставил Вижуал  Студию 2012,
Все работает.
От компьютера же не должно зависеть.
Может что-то нужно задать в параметрах построения?
Никак не хочет на домашнем компе работать.

Автор: Yulo 24.9.2013, 22:58
Да, действительно зависит от компьютера,
а точнее от процессора.
Т.к. проц старый, не все умеет.
Посмотрел на какой инструкции вылетает по ошибке,
оказалось она из SSE.
В параметрах проекта, в опции Включить расширенный набор инструкций
стояло "Не задано".
После того как я исправил на "Не использовать расширенные наборы инструкций (/arch:IA32)"
все заработало.

Если это кому-нибудь интересно!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)