Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2017, 15:26   #1
LD-One
Пользователь
 
Регистрация: 18.03.2012
Сообщений: 47
По умолчанию Ошибка линкера

Столкнулся с довольно интересной проблемой, изначально компилировалось все идеально при настройках линкера:
Код:
/MERGE:.rdata=.text /FIXED:NO uuid.lib kernel32.lib user32.lib advapi32.lib shlwapi.lib shell32.lib secur32.lib psapi.lib ole32.lib gdi32.lib comctl32.lib ws2_32.lib crypt32.lib wininet.lib lde32.lib msxml2.lib oleaut32.lib netapi32.lib userenv.lib comdlg32.lib mpr.lib
После чего долго проект не компилировал, после написания объемного кода, обнаружил такую вот ошибку:
Код:
error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)"
(предположительно там где кракозябры: неразрешенный внешний символ). Почитав документацию MS об lnk2001, нашел совет подключить msvcrt.lib msvcmrt.lib. Ошибка исчезла, но хотелось бы избежать подключения этих библиотек. Есть какая-та возможно разобраться, какая часть кода вызывает эту ошибку?
(Оператор "new" я нигде не использую)
LD-One вне форума Ответить с цитированием
Старый 31.08.2017, 15:31   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от LD-One Посмотреть сообщение
(предположительно там где кракозябры: неразрешенный внешний символ)
это не предположение, это 100% (так выглядит DOS (OEM) кодировка в ANSI (Windows 1251)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.08.2017, 15:40   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Оператор "new" я нигде не использую
Вы программист или домохозяйка, у которой что-то на экране само появляется? Что используете?
p51x вне форума Ответить с цитированием
Старый 31.08.2017, 15:51   #4
LD-One
Пользователь
 
Регистрация: 18.03.2012
Сообщений: 47
По умолчанию

На другом форуме мне сказали что я переопределил new, delete. Но я этого не делал, вообще нигде не использую эти операторы.
LD-One вне форума Ответить с цитированием
Старый 31.08.2017, 16:01   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Вы может и не используете, но их может использовать С++ рантайм, те же stl коллекции например.
waleri вне форума Ответить с цитированием
Старый 31.08.2017, 16:26   #6
LD-One
Пользователь
 
Регистрация: 18.03.2012
Сообщений: 47
По умолчанию

STL коллекции тоже не использую, вроде как.

Последний раз редактировалось LD-One; 31.08.2017 в 16:32.
LD-One вне форума Ответить с цитированием
Старый 31.08.2017, 16:32   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А как вы думаете она буфера выделяет, строки форматирует и т.д.?
p51x вне форума Ответить с цитированием
Старый 31.08.2017, 16:55   #8
LD-One
Пользователь
 
Регистрация: 18.03.2012
Сообщений: 47
По умолчанию

Явно нет
LD-One вне форума Ответить с цитированием
Старый 31.08.2017, 17:10   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Да неужели... Берем даже 10 студию:
streambuf:
Код:
	__CLR_OR_THIS_CALL basic_streambuf()
		: _Plocale(_NEW_CRT locale)
		{	// construct with no buffers
		_Init();
		}

...

	__CLR_OR_THIS_CALL basic_streambuf(const _Myt& _Right)
		: _Plocale(_NEW_CRT locale(_Right.getloc()))
		{	// construct by copying _Right
		_Init();
		setp(_Right.pbase(), _Right.pptr(), _Right.epptr());
		setg(_Right.eback(), _Right.gptr(), _Right.egptr());
		}
xlocnum:
Код:
	static size_t _Getcat(const locale::facet **_Ppf = 0,
		const locale *_Ploc = 0)
		{	// return locale category mask and construct standard facet
		if (_Ppf != 0 && *_Ppf == 0)
			*_Ppf = _NEW_CRT numpunct<_Elem>(
				_Locinfo(_Ploc->c_str()), 0, true);
		return (_X_NUMERIC);
		}
и т.д.

P.S. А уж про коллекции, которые напрямую инклудят memory, вообще смешно читать.

Последний раз редактировалось p51x; 31.08.2017 в 17:21.
p51x вне форума Ответить с цитированием
Старый 31.08.2017, 17:21   #10
LD-One
Пользователь
 
Регистрация: 18.03.2012
Сообщений: 47
По умолчанию

Вообще впервые вижу такие функции и названия библиотек
LD-One вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка линкера Denis_nn Общие вопросы C/C++ 17 27.08.2014 23:20
Ошибка линкера Denis_nn Общие вопросы C/C++ 4 18.07.2012 19:00
ошибка линкера: indefined reference to 'EnumPrintersW@28' agronomchek Помощь студентам 5 04.03.2012 16:38
Ошибка линкера: error LNK2001: unresolved external symbol _WinMain@16 krugolet Visual C++ 4 02.01.2012 23:03
Опция линкера /NODEFAULTLIB kot111 Общие вопросы .NET 9 30.12.2007 18:22