PDA

View Full Version : OLE32, Ordinals & QT_WINCE_FORCE_CREATE_GUID on Windows CE - a little lost...



sebastian.f
26th June 2009, 09:20
Hello,

I am wondering if anyone can help point me in the right direction here.

I am trying to build a Qt application for Windows CE.

I have set up a project with the SDK for my (x86) CE platform and have built a simple Win32 app successfully, ive also managed to build, deploy and run a QCoreApplication however trouble arises when I try to make a QApplication, which makes use of QtGui4.dll.

I know the problem is with a dependancy, so I ran the dependancy checking wizard (http://labs.trolltech.com/blogs/2009/05/04/qt-on-custom-windows-ce-devices/) and attempted to load QtGui4.dll dynamically and sure enough it failed with the debugger providing:

ERROR: function @ Ordinal 8164800 missing in Module 'ole32.dll'
!!! Please Check your SYSGEN variable !!!
: Could not be loaded

The only warning I got from the wizard was about CoCreateGUID which CE doesn't support. Ive build my application with this definition but on looking at the Qt source it appears that Qt needs to be built with this, not my app, however I installed Qt for Windows CE so surely this should already have been done?

The only reference to OLE32.dll I can find is in qapplication.c where indeed there is a preprocessor condition that causes Qt to use its own GUID creation function, but then I doubt there would be any explicit references to ole32, im not sure what functions this contains so I dont know really what to look for.

I cant find any files that would indicate what function this ordinal refers to, im still looking but as of now im completely stuck :(

Could anyone suggest where I may go from here? Is it worth rebuilding the Qt source, my only concern with that is I dont have a project for it and i'd probably only end up missing loads of definitions and building it with even more missing dependancies than I have now!

Thanks for any suggestions!

EDIT: Update
--------------------------------------------
OK, from reading around ive found out that OLE32.DLL implements a different set of functions depending on the level of COM support (one of three levels) (http://msdn.microsoft.com/en-us/library/ms885910.aspx).

Using the success/failure of GetProcAddress on functions unique to each level I have determined that the platform im building on has the "COM SUPPORTED" level, but looking at the functions called in Dependancy Walker for a QApplication build, it seems that Qt needs a number of functions only avaliable at the "DCOM SUPPORTED" level, more than just CoCreateGUID.

So I believe I need to either rebuild Qt attempting to specify the limitations of my platform (though if this was possible surely it would have been done on the CE version I downloaded?) or upgrade my platform.