Создание приложения Visual C++, которое не использует функции CRT все еще ссылки некоторые

В дополнение к отслеживанию пикселей, вторым способом отслеживания скорости открытия является поиск переходов по ссылкам. Если кто-то щелкнул, значит, он открыл его. Это редко, но важно не выбрасывать эти данные.

Подробнее:

6
задан Community 23 May 2017 в 12:25
поделиться

2 ответа

__ fltused подразумевает, что вы используете или, по крайней мере, объявили некоторые числа с плавающей запятой или двойные. Компилятор вводит этот «бесполезный» символ, чтобы заставить плавающий файл поддержки .obj загружаться из crt. Вы можете обойти это, просто объявив символ с именем

#ifdef __cplusplus
extern "C" {
#endif
int _fltused=0; // it should be a single underscore since the double one is the mangled name
#ifdef __cplusplus
}
#endif

WRT _memcpy - memcpy - это функция __cdecl, и все функции cdecl получают автоматический знак _ как часть своего оформления. поэтому, когда вы говорите «__cdecl memcpy» - компилятор и компоновщик ищут символ с именем «_memcpy». Внутренние функции - даже если они запрошены явно - все равно могут быть импортированы, если в настройках сборки есть параметры отладки, которые противоречат внутренним функциям. Так что в какой-то момент вам все равно придется реализовать свой собственный memcpy и связанные с ним функции.

10
ответ дан 10 December 2019 в 00:41
поделиться

Я рекомендую один раз установить параметр компилятора «генерировать список сборок» (или какой-либо другой) для foobar.cpp, а затем проверить код ассемблера. Это действительно должно сказать вам, где используются эти символы.

0
ответ дан 10 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: