Я занимаюсь разработкой проекта SmartDevice на C # (Windows Mobile 6.1 — Visual Studio 2008 — Pocket PC) и хочу использовать PInvoke. У меня есть родная DLL, написанная на C ++.
Когда я запускаю приложение на моем устройстве, я помещаю нативную DLL в каталог \ Program Files \ My Project (на моем устройстве), и она работает, но мне нужно использовать эмулятор, и я не знаю, где разместить навигационную DLL ( на моем компьютере) в этом случае.
Я попытался в рабочий каталог с относительным путем, я попытался DllImport абсолютный путь:
[DllImport(@"C:\John\VMDLLDevice.dll", EntryPoint = "Write")]
public static extern bool Write(char[] FileName);
Но когда я призываю родную DLL, я получаю исключение, потому что эмулятор не может найти DLL.
Где мне разместить родную DLL для использования эмулятора?
Предположим, у вас есть эти два проекта в одном решении Visual Studio:
SmartDeviceProject1
: приложение для устройства Pocket PC в C#
,NativeDLL
: Win32 SmartDevice DLL в C++
,Теперь вы можете выполнить следующие шаги:
\\Program Files
вашего эмулятора вы можете увидеть две новые директории: SmartDeviceProject1
а также NativeDLL
(Пуск -> Программы -> Проводник -> Файлы программ).Ваш NativeDLL.dll находится в NativeDLL
каталог, поэтому используйте следующий DllImport:
[DllImport(@"..\NativeDLL\NativeDLL.dll", EntryPoint = "Write")]
public static extern bool Write(char[] FileName);
И теперь вы можете запустить свое приложение, используя эмулятор.
MSDN дополнительная информация:
Использование эмулятора в проектах смарт-устройств.
Вы также должны иметь возможность добавить свою DLL в качестве ссылки на ваш проект, а затем в свойствах этого файла выберите Скопировать Локальный> True.