Импорт C ++ DLL в приложение C # Smart Device - PullRequest
0 голосов
/ 14 апреля 2011

Я задаю этот вопрос после того, как я просмотрел тонны блогов и веб-страниц и перепробовал почти все, что люди объясняли.

У меня нет проблем с импортом C ++ Win32 DLL в приложение C # Windows. И это было на самом деле прямо.

Но я пытаюсь импортировать C ++ DLL в C # «Приложение для смарт-устройств», особенно с помощью Visual Studio 2005.

В моем исходном файле DLL C ++ (TestDLL.dll) у меня есть следующие строки:

#if defined (__cplusplus)
extern "C" {
#endif

    __declspec(dllexport) void __cdecl foo();

#if defined (__cplusplus)
};
#endif

extern void __cdecl foo()
{

}

И мой класс оболочки C # (Wrapper.cs) имеет следующее:

[DllImport(TestDLL.dll)]
private static extern void foo();

public static void fooCS()
{
    foo();
}

И мой класс драйвера C # вызывает следующее:

Wrapper.fooCS();

И я подключил свое устройство Pocket PC 2003 к ПК, затем я начал отладку и запустил программу. И я получаю следующее сообщение об ошибке:

MissingMethodException: PInvoke DLL «TestDLL.dll» не найден.

Я дважды трижды проверил свое местоположение DLL, поэтому это не может быть проблемой. А потом я попытался использовать множество различных шаблонов из Visual Studio 2005.

  • MFC Smart Device DLL
  • Смарт-устройство MFC
  • Приложение Win32 Smart Device
  • Project ATL Smart Device Project
  • Win32 DLL

Но, похоже, ничего не получалось. Всегда одна и та же ошибка во время выполнения.

Я также пытался изменить конфигурацию процессора при создании решения. Но не поможет.

Так что теперь я ищу помощь экспертов.

К вашему сведению, на моем устройстве установлена ​​следующая платформа:

  • Windows Mobile 6 Classic
  • CE OS 5.2.1433
  • Процессор: ARM920T

А среда разработки - это ...

  • Windows 7 64bit
  • Visual Studio 2005

Заранее спасибо,

1 Ответ

1 голос
/ 18 апреля 2011

Извините, я был действительно глуп.
Причина, по которой приложению не удалось загрузить файл DLL, заключалась в том, что я выполнял отладку на мобильном устройстве.И это вызвало проблему с путем.

Поэтому я вручную скопировал DLL-файл и EXE-файл приложения на мобильное устройство и запустил программу.Это сработало идеально.
Ганс (комментатор), вы были правы.Благодарю.=)

Теперь у меня возник вопрос, как мне легко отладить эту проблему.

Единственный способ, который я знаю в настоящее время, - это ручное копирование версии выпуска файлов DLL и EXE на мобильное устройство.и тестирую это.= (

Кто-нибудь знает лучший способ?

...