Помогите описать intrinsic функцию (memset) VC 9
От: fkRTTI  
Дата: 12.11.09 18:58
Оценка:
Добрый вечер, решил использовать динамический импорт и директиву /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! Подскажите пожалуйста как решить проблему.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.