Re: POOM - Pocket PC 2003 - Visual Studio .NET 2003 - eMbedded Visual C++ 4.0

From: Peter Foot [MVP] (feedback_at_no-spam.inthehand.com)
Date: 12/14/04


Date: Tue, 14 Dec 2004 08:30:06 -0000

1.Your device is ARM based, so installing the x86 version to it will not
work.
2.Your device is Pocket PC 2003
3.You need at least eVC 4.0 Service Pack 2, but you should use the latest SP
available.
4.eVB is deprecated and will not be supported on any future devices. While
current eVB applications may run on PPC2003 by installing the eVB runtimes,
you can't develop with eVB directly on a PPC2003 device - eVB 3.0 only
allows debugging on PPC2000/PPC2002 devices.
5.MissingMethodException is likely to be due to a missing native dll or
incorrect version for your CPU. Also since only a subset of the POOM
functionality is implemented and working in the GotDotNet sample you may
have hit a method which is not implemented or correctly implemented in the
native dll. For example the GotDotNet sample has no support for marshalling
dates.
To use SysAllocString make sure you link to oleaut32.lib in the project
settings.

Peter

-- 
Peter Foot
Windows Embedded MVP
www.inthehand.com | www.opennetcf.org
"MRenkema" <NoSpam@NoSpam.NoSpam> wrote in message 
news:39452778a1e4304d0a93886c0ac635d7@localhost.talkaboutcomputing.com...
> Hi there,
>
> I am in the process of writing an application to write appointments into
> the Pocket PC calendar using the Pocket Outlook Object Model. My
> development environment is .NET 2003, and I have spent a few days
> researching the issues regarding managed .NET's inability to communicate
> with the native POOM APIs.
>
> I still don't know exactly why .NET cannot talk to the POOM API directly,
> I would have expected it to be similar to communicating with the windows
> API but that is not too important. Apparently the .NET CF one hasn't been
> written yet so we have to use the POOM API developed a number of years
> ago.
>
> The two solutions that are available seem to be the InTheHand one and the
> GotDotNet one. I have managed to get the InTheHand demo to work, but I
> would prefer to use the code sample provided by GotDotNet as it would mean
> not having to rely on a third-party.
>
> I am using an i-Mate device that is running Pocket PC Version 4.20.0
> (Build 14053). I believe this to be Pocket PC 2003 (not 2nd edition).
>
> The device says that it has an Intel PXA263 processor, but when I view the
> device information from eMbedded Visual C++ 4.0's Remote System
> Information tool it says the processor is a StrongARM. The table in the
> following page suggests that this is an ARM processor:
> http://www.pixagent.com/pocketitp11/processors.html
>
> I have tried copying the GotDotNet pre-packaged cab file for the ARM
> processor to the device and opening it - it appeared to install correctly
> but the GotDotNet C# application did not run, throwing a
> System.MissingMethodException.
>
> I then tried to copy the x86 cab file to the device and to install it but
> the installation failed. This suggests to me that the processor is indeed
> an ARM processor.
>
> The System.MissingMethodException is similar to an exception that I had
> when attempting to get the InTheHand solution to work using an older
> version of their demo that only had support for the emulator. When I got
> the later version of the demo and installed it all worked fine - the
> exception may have referred to the dll not being able present or able to
> be seen by the app.
>
> I have installed eMbedded Visual Tools 3.0 and also eMbedded Visual C++
> 4.0 (with SP4 and the Pocket PC 2003 SDK). I think that I have to use
> eMbedded Visual C++ 4.0 to write native code for Pocket PC 2003, as
> eMbedded Visual Tools 3.0 is intended for Pocket PC 2002 and there does
> not appear to be an eMbedded Visual Basic 4.0 in existence.
>
> When I try to recompile the GotDotNet native dll using eMbedded Visual C++
> 4.0 (SP4) I get a few errors. I am attempting to compile for Pocket PC
> 2003, Win32 (WCE ARMV4).
>
> The errors are:
> --------------------Configuration: PocketOutlook - Win32 (WCE ARMV4)
> Debug--------------------
> Linking...
>   Creating library ARMV4Dbg/PocketOutlook.lib and object
> ARMV4Dbg/PocketOutlook.exp
> pocketoutlook.obj : error LNK2019: unresolved external symbol
> SysFreeString referenced in function IRecipient_put_Address
> pocketoutlook.obj : error LNK2019: unresolved external symbol
> SysAllocString referenced in function IRecipient_put_Address
> pocketoutlook.obj : error LNK2019: unresolved external symbol
> CoCreateInstance referenced in function IPOutlookApp_Create
> ARMV4Dbg/PocketOutlook.dll : fatal error LNK1120: 3 unresolved externals
> Error executing link.exe.
>
> PocketOutlook.dll - 4 error(s), 0 warning(s)
>
> When I look at the code for IRecipient_put_Address I cannot see any
> difference to other usages of SysFreeString or SysAllocString in other
> procedures. The code for this is shown below:
>
> HRESULT
> IRecipient_put_Address(IRecipient* thisPtr, LPCTSTR pwsz)
> {
>    BSTR bz = SysAllocString(pwsz);
>    HRESULT hResult = thisPtr->put_Address(bz);
>    SysFreeString(bz);
>    return hResult;
> }
>
> The IPOutlookApp_Create procedure looks like this:
>
> HRESULT
> IPOutlookApp_Create(IPOutlookApp** pApp)
> {
>    return CoCreateInstance(CLSID_Application, NULL,
>                            CLSCTX_INPROC_SERVER,
>                            IID_IPOutlookApp,
>                            reinterpret_cast<void**>(pApp));
> }
>
> I am unsure of what step to take next, so any comments are definately
> welcome.
>
> So to summarize:
> 1. Is the Intel PXA263 processor an ARM processor?
> 2. Is Pocket PC Version 4.20.0 (Build 14053) a version of Pocket PC 2003?
> 3. Do I need to use eMbedded Visual C++ 4.0 (SP4) to develop for Pocket PC
> 2003?
> 4. Is there an eMbedded Visual Basic 4.0 for development for Pocket PC
> 2003?
> 5. Do I need to recompile the GotDotNet cabs using eMbedded Visual C++ 4.0
> (SP4) and is this the reason why the C# code failed to run with the
> System.MissingMethodException when the ARM pre-packaged cab file was
> installed onto the device?
> 6. Why won't the eMbedded Visual C++ 4.0 dll compile?
>
> Thanks in advance,
> Michael Renkema
> Segar Associates
> Auckland
> New Zealand
> 


Relevant Pages

  • Re: How to enable Flash Player in a WinCE 4.2 OS design
    ... Pocket PC 2003 is a specific type of Windows Mobile device. ... installing it, you should know whether it's legal to install it on ... Checked on the BSquare site for Flash Player and could find nothing. ...
    (microsoft.public.windowsce.app.development)
  • Re: emu48ce problem on hp jornada pocket pc
    ... Microsoft pocket PC version 3.0.11171Processor ARM SA1110 ... I personally tried Emu48CE v1.23 two or three years ago on my Jornada ... I will download your version and see what happens when I install it and run ...
    (comp.sys.hp48)
  • Re: Win CE 4.2
    ... You're installing the wrong version of the Compact ... Paul T. ... Even tried copying the exe from pocket pc device, ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: Win CE 4.2
    ... You're installing the wrong version of the Compact ... Paul T. ... Even tried copying the exe from pocket pc device, ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: Questions relating to Deploying App to Pocket PC?
    ... >I thought the .x86 is for Intel processors? ... >Since the ARM cab worked, where on the PPC do I find this info? ... Intel has a license to build and distribute ARM CPUs. ... Pocket PC 2003. ...
    (microsoft.public.pocketpc.developer)