none
MFC for Windows CE 6.0 Applications RRS feed

  • Question

  • I have an third party terminal emulation application developed for a CE 6.0 device.

    Initially the application would not install because of a failure to load a certian .DLL file. The error code '7e' simple indicated that something could not be found. It looks like what was missing were other DLL's that it needed to exist in the OS. I added in the AYGSHELL.DLL and the error message went away but the application still does not run. If you double click on the application to start it, I get a short message then nothing. Two other utility programs also show no reaction when double clicked to start. So I am still thinking that here are other .DLL files missing.

    A comment made by the developer of the terminal Emulation software(Called ClientMax) stated: "We also need the MFC runtime which may be why some of the universal applets
    like the ColorSelector.exe etc. are not running".

    Digging into this more I found a web-sit message that stated: "As far as execution is concerned, you will have to add the MFC runtime DLLs that ship with Visual Studio 2005 to your operating system image manually. " "Note that the MFC runtimes are not displayed in the CE 6.0 operating system catalog, the MFC runtime DLLs ship with Visual Studio 2005 and would need to be added to an operating system image manually - You have two choices for writing MFC applications, statically linked MFC (the default option), or dynamically linked MFC - the MFC runtime DLLs can be found in the C:\Program Files\Microsoft Visual Studio8\VC\ce\Dll\<processor> folder."

    So my first guess and answer I am hoping you all can confirm is if I do indeed need to copy some MFC files from that folder into the OS image so they end up residing in the /Windows folder on my CE 6.0 device?

    If that is true, then which files do I need to copy over? A bunch are listed. Which ones in particular would I need to add.

    Is is correct that I just need to get these files into the release directory, in a way the image build gets them into the NK.BIN file?

    Other Web-sites indicated I could use a program called CEFileWiz ( http://archive.msdn.microsoft.com/CEFileWiz/Release/ProjectReleases.aspx?ReleaseId=2799) to copy the files. Bt not sure how that exactly works. Is there a document or website that explains its function in more detail?

    Thanks.

     

    Monday, July 2, 2012 4:00 PM

All replies

  • The files you need are probably MFC80U.DLL, MSVCR80.DLL, and ATL80.DLL; it depends on exactly what MFC stuff your app contains (ATL, C runtime, etc).  I have successfully placed them in the same folder as the .EXE file for my MFC app, or into the \Windows folder as part of my NK.BIN image.  There are a couple of those files (MFC80UD and MSVCR80D) that are for debug builds of your app.

    What I have seen is that when those files are missing, my apps will close without any messages at all; i.e., they show no reaction when double-clicked to start.  I think that most of the other DLLs in that folder you name are intended to provide localized MFC messages for various locales.

    Also, I believe that one can use the same DEPENDS tool from MSFT to look at at least some of the dependencies for a WinCE exe as you can for Win32 exe.

    Monday, July 2, 2012 4:15 PM
  • Thanks.

    It works out that I needed a pair of files called mfcce400.dll and olece400.dll.

    I only found these files in a folder where I had installed Microsoft Embedded Visual C++ 4.0.

    I sure wish applications would tell you exactly what files are missing.

    I did get a copy of the Dependency Walker to show what a application depends on for running, so thanks for that information.

    Tuesday, July 3, 2012 7:31 PM
  • I know the original post is faily old, but it seems to be the only one that mimics the same problem i am now facing. What i don't see is a resolution for your problem. Did you resolve your problem by copying the mfcce400.dll to the CE 6.0 device. If you did what version of that dll did you use? What method did you use to copy it?

    Using the Visual studio remote file viewer i notice that my CE5.0 device (Motorola MC9090) has version dated 4/2/2004. However my VS2005 development folder has a version dated 3/14/2003. Using the remote file viewer I can not import the newer version from the unit to my PC.

    So before i do something stupid like corrupt the CE OS, I'd like to know if this worked & how you accomplished it.

    Thanks

    Wednesday, January 23, 2013 11:20 PM
  • HI:

    Yes, copying over the mfcce400.dll and olece400.dll files fixed my problem on the CE 6.0 device we have. These files were not in the file system on the unit so I eventually added them into the NK.BIN so they would get installed in the /Windows folder when I load in the NK.BIN image. But initially I just manually copied them into the /Windows folder. . Seems there are different files depending on the processor being used. I needed to use the mfcce400.dll and olece400.dll files for a ARMV4I. The ones I used were the size 422K(431704) for the mfcce400.dll and the size of 276KB(282,624) for the olece400.dll. But I found/have others that are the same name but of different sizes for the different processors like the x86, ARM4V,  SH4.  I believe that these files only get loaded in when the application that uses them get executed.

    Hope I answered your question.


    • Edited by Chulk Ches Thursday, January 24, 2013 3:56 PM typo errors
    Thursday, January 24, 2013 3:55 PM
  • Thanks for your response, This is becoming more involved than i expected. How did you know which processor version you needed, was it trial & error? The processor for my device (motorola MC9190) lists a processor (Marvell PXA320) not listed by microsoft.

    I just dropped a version from my VS 2005 CE tools in the windows folder & it didn't work.

    I also downloaded the Embeded CE for VS2005 & just doing a test project it too wants the processor. How do i figure this out with the information i have?

    Thanks again.

    Thursday, January 24, 2013 7:51 PM
  • If the dll from ARMv4i has worked for Chulk Ches, the same dlls should work for you. Although PXA320 is ARMv5, during application development, all Xscale processors PXA27x/37x are considered same. Infact, I developed applications using ARMv4i for these processors on MC9090/MC9190 while working at Motorola.

    - Chandra

    Friday, January 25, 2013 10:55 AM
  • Chulk & Chandra,

    Thanks for all of your help. We got the unit up and running. Simply placing the DLL in the windows folder did not work. But we came accross a feature that is similar to registering the DLL. By placing the mfcce400.dll in the application folder & creating a .cpy file that copies it to the windows folder upon cold boot acts like its registering it at the same time.

    Now my next task is to figure out how to create my own CE image that contains this DLL, but tha's a topic for another thread.

    Thanks again.

    Gary 

    Friday, January 25, 2013 1:45 PM
  • Please mark the question as answered.

    - Chandra

    Wednesday, January 30, 2013 11:30 AM