No se puede cargar DLL 'coredll.dll': El módulo especificado no se pudo encontrar. (En Windows XP)

StackOverflow https://stackoverflow.com/questions/1471794

  •  16-09-2019
  •  | 
  •  

Pregunta

Gracias a los gurús en StackOverflow. Ustedes son increíbles. He publicado en la pregunta sobre el detectar el tiempo de inactividad en una aplicación marco compacto y conseguido respuestas muy rápidamente. Cuando probé la solución sugerida en mi máquina de desarrollo de Windows XP, consigo este error

  

No se puede cargar DLL 'coredll.dll': La   módulo especificado no se pudo encontrar.   (En Windows XP)

Tras Google por algún tiempo entendí que las bibliotecas OpenNETCF están tratando de poner en marcha coredll.dll para detectar el tiempo de inactividad pero esta DLL es shiped con sólo el sistema operativo Windows Mobile. Como estamos desarrollando la aplicación en un PC con Windows XP y no tiene acceso a los dispositivos de Windows CE ahora, nos llama la atención el problema.

¿Hay alguna manera de obtener coredll.dll en Windows XP? Cualquier otra solución a este problema?

Actualización : estamos apuntando a la aplicación para el dispositivo que se ejecuta en Windows Mobile 6 Professional

¿Fue útil?

Solución

Estoy confundido. La pregunta era específicamente sobre Compact Framework, que es para Windows CE. Si usted no tiene el hardware de destino, sin embargo, a continuación, utilizar un emulador.

En este caso específico , la SDF no es P / Invocando para hacer esto, se trata de utilizar un aplicación IMessageFilter . Desde aquí se puede hacer lo mismo para el escritorio.

Pero dicho esto, simplemente no se puede desarrollar una aplicación CF focalización XP. Lo que esto significa es que si crea su aplicación utilizando el marco completo, la orientación del escritorio, y esperar que basta con ejecutar cuando reciba su dispositivo CE, usted se encontrará con una gran sorpresa. Si la orientación ambos sistemas operativos es un objetivo de diseño, entonces hay una gran cantidad de trabajo por hacer, y la mayoría de la materia interfaz de usuario no es transferible (que en realidad le recomiendo usar diferentes asambleas de interfaz de usuario para los dos objetivos y la lógica de negocio común).

EDIT1

supongo que para responder más plenamente a la pregunta de "¿Puedo obtener coredll.dll para mi escritorio?" la respuesta es un rotundo "no". Hay una multitud de razones esto no funcionaría (está en ROM, que es dependiente del hardware, no es en realidad un archivo, pero arreglado para ejecutar en su lugar, es compilado para un sistema operativo diferente, puede ser compilado para un procesador totalmente diferente , etc).

Usted tiene un par de opciones. Se podría tratar de crear una versión de escritorio de coredll.dll que exporta todas las funciones que desee y de enviarlas a la Kernel32, user32, etc DLL. Eso es un bote lleno de trabajo ( estado allí, intentaron que ).

Se podría tratar de escribir código que funcione para ambas plataformas . Factible, sino también todo un reto.

El corto de él es, a menos que absolutamente debe dirigirse tanto, que no quieren tratar de. Get un emulador , < a href = "http://code.msdn.microsoft.com/CE6VirtualPCBSP/Thread/List.aspx" rel = "noreferrer"> PC virtual o algún tipo de sistema de eval , y apuntar a eso.

Otros consejos

No se puede ejecutar OpenNETCF en un PC con Windows. Es necesario utilizar un emulador de Windows CE. Esto viene con la SDK de Windows CE .

Escribir código que funcione para ambas plataformas.

En nuestra solución de cualquier cosa que se va a tocar la plataforma se abstrae a diferentes objetos. Por lo tanto tenemos un objeto IPlatformServices (que devuelve la materia como IPowerManagement, IPrinter etc) tenemos dos implementaciones diferentes a PCPlatformServices y un CEPlatformServices y la devuelta se basa en el valor Environment.PlatformID. En el escenario que desea objetos uno por uno para CE y Desktop 2 IdleDetector diferente. Sí, es un poco de dolor para identificar y abstracto todo esto, pero tendrá que hacer esto es lo que desea la compatibilidad entre las dos plataformas diferentes.

Nuestros "PCPlatformServices" es burla principalmente en nuestro caso, ya que sólo queremos la compatibilidad de escritorio para poner a prueba las cosas más rápidamente que no interactúan con el hardware (como el código de la aplicación / lógica de negocio)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top