Как использовать загрузку и выгрузку собственных файлов DLL в .NET Compact Framework? - PullRequest
0 голосов
/ 14 августа 2011

У меня есть .NET Compact Framework (CF) приложение на Windows CE , которое взаимодействует с некоторыми собственными DLL-файлами, и у приложения есть некоторые неизвестные поведения и проблемы.

На данный момент я использую прямые вызовы с помощью атрибута [DllImport] и определяю метод:

[DllImport("mynative.dll")]
private static extern void HelloWorld(byte[] arrName);

Я хочу попробовать освободить загруженные библиотеки, и веб-исследования показали мне LoadLibrary и FreeLibrary.Как найти учебник или пример кода?

Вопрос переполнения стека Как динамически загружать и выгружать собственный файл DLL? - это образец рабочего стола, но как это сделать?это сделано для Compact Framework?Обратите внимание, что .NET Compact Framework не имеет метода Marshal.GetFunctionPointerForDelegate.

1 Ответ

1 голос
/ 14 августа 2011

Среда выполнения CF сама вызывает LoadLibrary для P / Invokes - она ​​вызывает ее для каждой «версии» используемой вами DLL (так что если вы использовали «mynative.dll» в одном месте и просто «mydll» в другом,будет вызван дважды).

Дескриптор, возвращенный из этого вызова, не предоставляется приложениям и не должен быть.Нет способа, кроме закрытия приложения, заставить среду выполнения вызывать FreeLibrary для этой DLL, поэтому нет способа ее выпустить.

Я собираюсь согласиться с комментарием @Cody Greyпо этому вопросу, хотя, в том, что даже если бы это работало, это не решило бы проблему.Вам действительно нужно найти и исправить ошибку, вызывающую плохое поведение, которое вы видите.

...