Добрый вечер, решил использовать динамический импорт и директиву /nodefaultlib для полной минимизации размера модуля.
Все нужные функции импортирую, НО, по непонятным причинам возникает ошибка линковки:
PModule.obj : error LNK2001: unresolved external symbol _memset
Создал маленький проект, туда запихал небольшой код, отказался от црт (/nodefaultlib + /entry:winmain) и все равно возникала эта ошибка! В итоге оказалось, что комментируя WINAPI функцию GetClassName, ошибка исчезала. Возникает ощущение что компилятор сам добавляет memset в проект при определенных условиях. Поэтому вижу только один путь для решения проблемы: описать функцию memset.
При использовании /nodefaultlib, ни одна lib библиотека к проекту не подключается, поэтому таким образом определить memset нельзя. Пробовал прописать напрямую в проекте:
extern "C"
{
void * memset (void *Dst, int Val, size_t Size)
{
return Mmemset(Dst, Val, Size); // импортируемая мною из ntdll функция
}
}
компилятор орет:
error C2169: 'memset' : intrinsic function, cannot be defined
Если указать директиву #pragma intrinsic (memset), то вдобавок к предыдущей ошибке возникает warning C4164: 'memset' : intrinsic function not declared
Отключал использование intrinsic-функций (в настройках проекта и добавлением /Oi-) все равно intrinsic function, cannot be defined! Подскажите пожалуйста как решить проблему.