В проекте смарт-устройства Я пытаюсь определить функцию, которая предположительно должна быть доступна в mscoree.dll. Соответствующее определение выглядит следующим образом:
[DllImport("mscoree.dll", EntryPoint = "#29")]
internal static extern int Object_GetHashCode(object obj);
Вы найдете это с Reflector во внутреннем классе EE в mscorlib.dll. Обратите внимание, что эта функция вызывается из Object.GetHashCode ().
У меня есть тестовый проект для интеллектуального устройства , который косвенно вызывает Object_GetHashCode. Когда я запускаю его на рабочем столе, все работает нормально. Когда я запускаю его на эмуляторе, я получаю следующую ошибку:
System.MissingMethodException: не удается найти точку входа «# 29» в DLL-файле PInvoke «mscoree.dll».
Почему это происходит? Разве точно не работает mscorlib.dll на эмуляторе и на рабочем столе? Кажется, потому что, когда я смотрю на реализацию Object.GetHashCode (), которая поставляется с mscorlib.dll, распространяемой внутри NETCFv35.ppc.armv4.cab, я вижу, что она также вызывает EE.Object_GetHashCode (). Почему mscorlib.dll может вызвать mscoree.dll, а я нет?
EDIT
Ссылка mscorlib в проекте Visual Studio указывает на следующий файл,
C: \ Program Files \ Microsoft.NET \ SDK \ CompactFramework \ v3.5 \ WindowsCE \ mscorlib.dll (210 КБ)
, но по умолчанию Reflector показывает содержимое следующего файла:
C: \ Program Files \ Microsoft.NET \ SDK \ CompactFramework \ v3.5 \ Debugger \ BCL \ mscorlib.dll (920 КБ)
Эти файлы имеют разные реализации для System.Object.GetHashCode (). Первый просто пуст , а второй выглядит следующим образом:
public virtual int GetHashCode()
{
return EE.Object_GetHashCode(this);
}
На самом деле все методы в первом файле кажутся пустыми, а гораздо меньший размер указывает на то, что предыдущий файл является просто заполнителем, так что VS может что-то ссылаться?
Наконец, я попытался найти mscorlib.dll в файлах на эмуляторе, но безуспешно. В файле журнала установщика указано, что каталог установки - \ Windows, но mscorlib.dll нигде нет. Где этот материал?
В общем, мне трудно искать ответы, когда дело доходит до CF, не знаю почему?
P.S. Я пытаюсь найти ответ на этот вопрос.