locked
window xp可以运行.net开发的window mobile软件吗? RRS feed

  • 问题

  • window xp可以运行.net开发的window mobile 6.0软件吗?

    本人之前用 .net开发了一个ppc 的软件现在想在pc端也运行这个软件不知道有没有办法呢?

    2010年5月21日 3:17

答案

  • 你好,Ayue

    如果该程序是基于.NET CF写的,而且不涉及到设备相关的功能(比如电话、联系人等等),只是简单的处理(文本、图片),应该可以在xp机器上运行。我之前试过将EBox4300(Windows Embedded CE 6.0 R2)的应用程序放在桌面PC(window xp)上运行,可以跑。

    但是我觉得最好还是自己做一个review,重建一个工程,毕竟托管代码的移植应该比较容易一些,而且是从.NET CF往.NET上移植,会比.NET往.NET CF容易一些。


    施炯
    2010年5月21日 6:28
  • MVP回答的非常正确。详细信息,请看下面的FAQ:

    Is it possible to convert projects from desktops to devices?

     


    Please remember to mark the replies as answers if they help and unmark them if they provide no help
    2010年5月21日 9:15
  • 如dearsj所说,您最好新建一个桌面版的工程,重新编译一遍,直接移植经常会有API不兼容的现象,如果你在.NET CF里面p/invoke了 GDI的 Native API,估计在桌面上更运行不了。


    I'm a device.
    2010年5月22日 12:17

全部回复

  • 你好,Ayue

    如果该程序是基于.NET CF写的,而且不涉及到设备相关的功能(比如电话、联系人等等),只是简单的处理(文本、图片),应该可以在xp机器上运行。我之前试过将EBox4300(Windows Embedded CE 6.0 R2)的应用程序放在桌面PC(window xp)上运行,可以跑。

    但是我觉得最好还是自己做一个review,重建一个工程,毕竟托管代码的移植应该比较容易一些,而且是从.NET CF往.NET上移植,会比.NET往.NET CF容易一些。


    施炯
    2010年5月21日 6:28
  • MVP回答的非常正确。详细信息,请看下面的FAQ:

    Is it possible to convert projects from desktops to devices?

     


    Please remember to mark the replies as answers if they help and unmark them if they provide no help
    2010年5月21日 9:15
  • 因为本人不是做手机开发的这个主要是因为临时需要才去开发的,所以对于“涉及到设备相关的功能”不是很清楚;软件主要是涉及到GDI+的画图和socket 套接字(UDP)通信,软件是基于.NET CF写的,在windows mobile 6.0的系统中和Windows CE 6.0上都可以运行但是,在xp电脑上就运行不了。
    2010年5月21日 14:35
  • 如dearsj所说,您最好新建一个桌面版的工程,重新编译一遍,直接移植经常会有API不兼容的现象,如果你在.NET CF里面p/invoke了 GDI的 Native API,估计在桌面上更运行不了。


    I'm a device.
    2010年5月22日 12:17
  •  static class Program
     {
      [DllImport("coredll.Dll", SetLastError = true)]
      private static extern IntPtr CreateMutex(SECURITY_ATTRIBUTES lpMutexAttributes, bool bInitialOwner, string lpName);
    
      [StructLayout(LayoutKind.Sequential)]
      public class SECURITY_ATTRIBUTES
      {
       public int nLength;
       public int lpSecurityDescriptor;
       public int bInheritHandle;
      }
    
      const int ERROR_ALREADY_EXISTS = 0183;
      /// <summary>
      /// 应用程序的主入口点
       /// </summary>
      [MTAThread]
      static void Main()
      {
        IntPtr hMutex = CreateMutex(null, true, "Grmmi");
        if (Marshal.GetLastWin32Error() != ERROR_ALREADY_EXISTS && hMutex != null)
        {
        Application.Run(new CSACView());
        }
        else
        {
        Application.Exit();
        }
      }  
     }
    
    为什么在ppc上运行的时候是没有问题的,但是在PC上运行的时候IntPtr hMutex = CreateMutex(null, true, "Grmmi.net");
    会提示找不到coredll.Dll库;是不是因为coredll.Dll是PPC才有的呢?那有没有其他的方法可以实现呢?
    2010年6月2日 9:17