Hi,
I've been looking into wine to see if I can remove the need for a dedicated windows machine to run some in-house vb6 software including a COM+ layer.
Currently I have my COM files in the System32 folder (as i read something that suggested that WINE would require the COM to be stored there).
I don't mind where it goes, i registered it using regsvr32 provided by wine.
I have compared the registry against my windows machine, and the COM appears to have registered successfully.
When i try to run an incredibly small vb app (appA) which only uses a few COM files i get the following error:
"Run-time error '-2147467259 (80004005)': Automation Error"
"fixme:ole:CoCreateInstance no instance created for interface {00000000-0000-0000-c000-000000000046} of class {main COM CLSID for appA}, hres is 0x80004005"
I have created a basic VB6 hello world form program, that runs fine. (So i dont believe i am missing any VB runtime files)
In order to register the COM i needed to add windows files to Wines' system32 folder, i also added files that dependencyWalker suggested:
* MSVCP60D
* msvcr71
* msvcp71
* mfc71deu
* mfc71fra
* mfc71jpn
* mfc71chs
* mfc71cht
* mfc71esp
* mfc71ita
* mfc71enu
* mfc71kor
* mfc71u
* mfc71
* mfc42d
* mfcn42d
* mfco42d
* xpsp2res
* msctfime.ime
* asyncfilt
* clbcatq
* comres
* hnetcfg
* imm32
* mfc42
* mpr
* msctf
* msvbvm60
* msvcp60
* secur32
* uxtheme
* ws2help
* wshtcpip
* mswsock
* vbscript
to those with a keen eye, you may notice that some of the files i copied are built-in to Wine. I didn't realise at the time, but i found all of them in the 'configure wine, libraries' and set their Wine configuration to built-in only.
Also, some of the COM is still debug mode, hence needing the development versions of mfc etc
I ran dependencyWalker on appA on the windows machine and under wine. I compared the results, analysing the results is not easy however.
I did find that under Wine i got many many lines that look like this:
"GetProcAddress(0x7e860000 [WINEX11.DRV], "AbortDoc" called from "GDI32.DLL" at address 0x7ecc8a0a and returned NULL. Error: Procedure not found (127)."
also:
"GetProcAddress(0x7B820000 [KERNEL32.DLL], "IsTNT") called from "MSVBVM60.DLL" at address 0x73421BE1 and returned NULL. Error: Procedure not found (127)."
"GetProcAddress(0x7EB50000 [OLE32.DLL], "CLSIDFromProgIDEx") called from "MSVBVM60.DLL" at address 0x73424E49 and returned NULL. Error: Procedure not found (127)."
"LoadLibraryA("SXS.DLL") returned NULL. Error: Message 0x%1 not found in file %2 (317)."
none of which appear in the windows environment.
I hope this is clear, and provides enough information for someone to help or point me in the correct direction.
Perhaps, Wine just doesn't support this functionality?
Some closure would be greatly appreciated.
Thanks,
Andy
Might have a COM+ issue
Re: Might have a COM+ issue
"Builtin" are Wine's builtin libraries; you told Wine NOT to use the files you copied. If you want Wine to use the dlls you copied, set them to "native, builtin" or "native." The former setting will try to load the native files first, then use builtin if that fails; the latter will force Wine to use native only.UmbraMalison wrote:
to those with a keen eye, you may notice that some of the files i copied are built-in to Wine. I didn't realise at the time, but i found all of them in the 'configure wine, libraries' and set their Wine configuration to built-in only.
-
- Newbie
- Posts: 3
- Joined: Wed Feb 25, 2009 7:08 am
Re: Might have a COM+ issue
Yes I realise this. I understood that it was best practice to use built-in.dimesio wrote:"Builtin" are Wine's builtin libraries; you told Wine NOT to use the files you copied. If you want Wine to use the dlls you copied, set them to "native, builtin" or "native." The former setting will try to load the native files first, then use builtin if that fails; the latter will force Wine to use native only.
the output on the terminal when I use native is much worse:
"fixme:win:User32InitializeImmEntryTable (0x19650412): stub"
"fixme:win:User32InitializeImmEntryTable (0x19650412): stub"
"fixme:win:User32InitializeImmEntryTable (0x19650412): stub"
"fixme:ole:CoCreateInstance no instance created for interface {00000000-0000-0000-c000-000000000046} of class {main COM CLSID for appA}, hres is 0x80004005"
thats why I made of point of setting it to built-in. sorry for not explaining myself well before.
It seems that the native files have too many pointers to things that are unknown to wine, hence why it appears to work better as built-in
Cheers,
Andy
-
- Newbie
- Posts: 3
- Joined: Wed Feb 25, 2009 7:08 am