views:

477

answers:

2

I want to ask, is there any way of making Windows XP program to work under Windows CE? I got some DLLs compiled in Windows Xp, but they refuse to load in WIndows CE. SO is it a real big problem to make such a transform or may be there are some solutions? I searched internet by they all talking about transforming Windows CE to ordinary Windows. Does anyone encountered this problem?

Some updates of my question based on comments: Actually I have a really big open source project, And I tried compiling it under Windows CE, there are many compilation errors, so changing that Open source program will be also hard to do?

There are such problems like this: Type mismatch in some Windows API function parameters. Some header files do not exists in the system. The __asm keyword gives errors. Function declared as a dllimport function also gives error This is not all of errors

+1  A: 

Well, you need to be aware of the fact that CE runs on ARM, SH4, X86 and (can't remember the 4th) processors. So obviously an X86 compiled Dll won't work on any Windows CE device.

Further more, Windows CE does not support the whole Win32 API so you will face problems there.

Finally, I am not familiar with Desktop Dll's and their loading and usage architecture, but from the comments you received my guess is that you will face problems there as well.

Shaihi
+1  A: 

Sounds like this library you're trying to port uses inline assembly. Only the x86 compiler supports it (of the compilers that ship with CE), so there's a huge roadblock right there. If you want this to work on somwething like WinMo you're going to have to remove all of those, make them calls to an external ASM file, and then port the x86 ASM to ARM ASM. Not a small amount of work.

Also, if it's using inline ASM, it probably does so for performance sake, meaning whatever you're trying to port probably is computationally heavy. You're aware that CE generally runs on processors that aren't really geared for that right?

The remainder of the errors are likely due to the fact that CE supports only a subset of Win32 (if it had the whole thing it would be called Widows XP). You'll have to find replacements for the missing calls. Again, this is not trivial.

ctacke