Hi all,

This is my first posting to this list...so here goes...

I have recently moved to Vista x64 and I'm having troubling compiling a
64-bit version of gvim. I downloaded the MinGW-x64 packages
(mingw-w64-bin_x86_64-mingw_20081123.zip) along with the MinGW-x86
version of make (mingw32-make-3.81-20080326-2.tar.gz).

Now the make fails when compiling if_ole.cpp with this error in included
header if_ole.h:
<snip>
gcc -Iproto -DWIN32 -DWINVER=0x0400 -D_WIN32_WINNT=0x0400 -DHAVE_PATHDEF
-DFEAT_BIG -DFEAT_OLE DFEAT_GUI_W32
-DFEAT_CLIPBOARD -DFEAT_MBYTE -pipe -w -march=native -Wall -O3
-fomit-frame-pointer -freg-struct-return -s -c
-o gobj/if_ole.o if_ole.cpp
gcc -c -Iproto -DWIN32 -DWINVER=0x0400 -D_WIN32_WINNT=0x0400
-DHAVE_PATHDEF -DFEAT_BIG -DFEAT_OLE -DFEAT_GUI_W
32 -DFEAT_CLIPBOARD -DFEAT_MBYTE -pipe -w -march=native -Wall -O3
-fomit-frame-pointer -freg-struct-return -s
pathdef.c -o gobj/pathdef.o
windres gobj/vimres.res gobj/vimrc.o
In file included from if_ole.cpp:43:
if_ole.h:50: error: 'interface' does not name a type
if_ole.cpp: In member function 'virtual HRESULT CVim::GetHwnd(UINT*)':
if_ole.cpp:299: error: cast from 'HWND__*' to 'UINT' loses precision
make: *** [gobj/if_ole.o] Error 1
make: Target `gvim.exe' not remade because of errors.
make: Leaving directory
`C:/Users/John/Documents/Software/Utility/Vim/72/vim72/src'

...

gvimext.cpp: In member function 'virtual HRESULT
CShellExtClassFactory::CreateInstance(IUnknown*, const IID&, void**)':
gvimext.cpp:432: error: cannot allocate an object of abstract type
'CShellExt'
gvimext.h:112: note:   because the following virtual functions are pure
within 'CShellExt':
c:\program
files\gcc\bin\../lib/gcc/x86_64-pc-mingw32/4.4.0/../../../../x86_64-pc-mingw32/include/shlobj.h:215:
note:         virtual HRESULT IContextMenu::GetCommandString(UINT_PTR,
UINT, UINT*, CHAR*, UINT)
make[1]: *** [gvimext.o] Error 1
windres --input-format=rc --output-format=coff -DMING gvimext_ming.rc -o
gvimext.res
make[1]: Target `all' not remade because of errors.
make[1]: Leaving directory
`C:/Users/John/Documents/Software/Utility/Vim/72/vim72/src/GvimExt'
make: *** [GvimExt/gvimext.dll] Error 2
make: Target `all' not remade because of errors.
make: Leaving directory
`C:/Users/John/Documents/Software/Utility/Vim/72/vim72/src'
</snip>

Note that turning off all optimizations makes no difference.

If I remove the need for OLE from the build I get a gvim.exe, but it
doesn't run. It starts up and then hangs chewing up 50% CPU on my Intel
Core 2 Duo. Process Explorer says that it's sitting in kernel function:

expinterlockedflushslist

Now, the interesting bit. If I use Visual Studio 2008 Express with the
SDK addon to build a 64-bit version of gvim, I don't get any errors on
if_ole.h and I get a working copy of gvim.exe.

Has anyone else tried this?

Cheers
John

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui