Не может найти ошибку DLL PInvoke в Windows Mobile

Я понимаю, что стоит, не проблема, а хорошее бесплатное решение, которое не включило бы регистрацию и должно будет разместить код в Dropbox путем выполнения этого, Вы немедленно получили бы управление версиями и резервное копирование, которые являются основными функциями, которые обеспечила бы единственная система разработчика.

12
задан ctacke 22 September 2009 в 12:21
поделиться

4 ответа

Чтобы расширить ответ Джареда, укажите еще четыре распространенных причины получения исключения MissingMethodException при вызове P / в CF:

  1. Вам не хватает зависимостей собственной библиотеки, которой вы являетесь вызов.
  2. Собственная сборка была скомпилирована для неправильной подсистемы (то есть для рабочего стола, а не для CE)
  3. Собственная сборка была скомпилирована для неправильного процессора (то есть x86, а не ARM)
  4. Вам не хватает виртуальная память для загрузки DLL.

Вы проверили, что точки входа DLL не украшены чем-то вроде dumpbin ?

8
ответ дан 2 December 2019 в 21:44
поделиться

Сообщение об ошибке обычно имеет одну из двух проблем

  1. Не удается найти DLL. Библиотека DLL обнаружена глядя на исполняемый каталог и переменную среды PATH
  2. Он не может найти функцию в DLL. Вы проверили, чтобы и объявление, и определение DLL были как extern "C" и помечены как __declspec (dllexport)

Кроме того, проверка работоспособности заключается в том, чтобы убедиться, что имя DLL написано правильно и не имеет суффикса .dll.

5
ответ дан 2 December 2019 в 21:44
поделиться

The DLL what you are using doesn't have definition for the method what you are calling. so the exception occurs.. it compiles fine.. only in run time problem occur.. solution is you need to make sure the definition is present in the DLL or not,else you need to go for some other dll.

-1
ответ дан 2 December 2019 в 21:44
поделиться

Ваша проблема в том, что управление памятью WM5 - дерьмо. DLL загружаются сверху вниз, а приложения снизу вверх. Если у вас недостаточно места между приложением и DLL, вы получите ошибку "can't pinvoke".

WM5 выделяет 32 слота по 32Мб для запуска приложений.

Каждый раз, когда WM5 выделяет память для dll, он использует минимум 64Кб блока, поэтому если ваша DLL равна 32Кб, то это займет 64Кб, если ваша DLL занимает 68Кб, то WM5 выделяет 2x64Kб - 128Кб.

Когда WM5 загружает нужную DLL, она всегда будет загружаться по нижнему адресу загруженного приложения previsouly, т.е. если приложение 1 загрузило DLL 2×30кб, то первая будет загружаться по адресу от 0 до 64кб, вторая от 64 до 128кб, то ваше приложение будет загружать свои DLL от 128кб, а не от 0, даже если ваше приложение будет работать в отдельном слоте.

Чтобы все заработало, вам придется загрузить приложение раньше или удалить ненужные приложения из папки запуска windows.

.
0
ответ дан 2 December 2019 в 21:44
поделиться
Другие вопросы по тегам:

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