Использование DLL C# для рабочего стола в Windows Mobile

У меня есть небольшой вопрос, требуется ли какая-либо модификация при использовании библиотеки DLL приложения Desktop C# в Windows Mobile? я получаю проблему, как File or assembly name 'Interop.CDO, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null', or one of its dependencies, was not found.. у меня есть исходный код настольной DLL, я не знаю, какую модификацию сборки мне нужно сделать, чтобы работать с мобильным телефоном. пожалуйста, дайте мне решение..

Заранее спасибо Грабит


person Naruto    schedule 25.11.2009    source источник


Ответы (5)


Скомпилируйте исходный код в виде мобильного DLL-файла.

Вы можете использовать мобильные dll-файлы на рабочем столе, когда на нем установлена ​​компактная структура (см. комментарий от ctacke, почему)

person EKS    schedule 25.11.2009
comment
На рабочем столе не требуется установленный CF для использования сборки CF. Сборки CF являются переназначаемыми и работают в рамках полной платформы. - person ctacke; 25.11.2009

Вы не можете использовать CDO на мобильном устройстве. «Жижи» внизу просто нет, поэтому, даже если вы каким-то образом перекомпилируете это для устройства (что я сомневаюсь, что вы все равно сможете это сделать), это все равно не принесет вам пользы. Как насчет того, чтобы рассказать нам, какую проблему вы пытаетесь решить, а не то, как вы уже решили (ошибочно) ее решить.

person ctacke    schedule 25.11.2009
comment
Эй, проблема в том, что... мне нужно загрузить всю веб-страницу (изображения, таблицы стилей, скрипты) в Windows Mobile. Но я знаю один метод, который заключается в получении HTML, анализе и загрузке каждой ссылки. и реализация сложна ... вместо этого я ищу некоторые библиотеки или интерфейсы, которые помогают загрузить всю страницу в виде архива ... так что я так чувствую, это будет легко. Один из CDO, который я видел, с помощью всего этого webapeg можно заархивировать в формате .Mht. Но на мобильных устройствах он не поддерживается :-(... - person Naruto; 26.11.2009

Сообщение об ошибке, которое вы получаете, предполагает, что DLL отсутствует.

Если вы преодолеете это препятствие, вы все равно не останетесь дома и не окажетесь дома — CDO связан с Outlook/Exchange, поэтому маловероятно, что он будет работать прозрачно.

person Ruben Bartelink    schedule 25.11.2009

Можете ли вы убедиться, что Interop.CDO доступен на вашей мобильной платформе? Или что он совместим с мобильной средой

person Graviton    schedule 25.11.2009
comment
я искал, но у меня нет надежды, что Interop.CDO поддерживается для мобильных устройств Windows... есть ли альтернативы для этого пространства имен? - person Naruto; 25.11.2009
comment
Если это не поддерживается, вам следует переписать свой код, чтобы он не зависел от этой части функций. - person Graviton; 25.11.2009

Шаги по созданию DLL с помощью C++ для Windows Mobile:

1) Файл > Создать > Проект... > Visual C++ > Смарт-устройство > Проект Win32 Smart Device

2) Напишите название проекта и нажмите OK.

3) Далее> Вставьте необходимые SDK (например, WM5 и WM6)> Далее> Нажмите на DLL> Готово

4) Щелкните правой кнопкой мыши исходную папку и выберите «Добавить»> «Новый».

5) Найдите имя файла .def, совпадающее с именем dll, и нажмите OK.

Теперь в дефе нужно написать примерно так:

LIBRARY    "dllName"

EXPORTS

exactFunctionName1                        DATA
exactFunctionName2                        DATA

In dllName.cpp You need to add those two methods (exactFunctionName1, exactFunctionName2) and write code for them.
You don't need to state more then a method names in def (plus <tab><tab>DATA next to name).

Where to place the DLL after builiding to make use of it in my C# project

It must be placed next to Your app or in Windows folder of Your device.
To get methods from that library just do the following in C#:

using System.Runtime.InteropServices;

[DllImport("dllName.dll")]
private static extern anyReturnType exactFunctionName1(anyArgumentType argumentName);

So as an example let's get arithmethic sum form myMath.dll:

[DllImport("myMath.dll")]
private static extern int sum(int first, int second);

Those methods can be also public but they still require "static extern".

Following example in C++ side You'll have this:

In myMath.cpp:

INT sum(INT first, INT second)
{
    return first + second;
}

In myMath.def:

LIBRARY    "myMath"

EXPORTS

sum           DATA

Источник :

http://social.msdn.microsoft.com/Forums/en-US/windowsmobiledev/thread/98e60ab6-aecf-4399-a5be-4937ec40aac9

person Infinity    schedule 27.01.2012