bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#12878: 24.2; Compiling failed on Windows 7 with VC 11 Express: _WIN3


From: 李丁
Subject: bug#12878: 24.2; Compiling failed on Windows 7 with VC 11 Express: _WIN32_WINNT version too low
Date: Mon, 19 Nov 2012 13:59:54 +0800

Hi,
Thank you for fixing the bug.

I checked out the latest branch (r 110913), it seems that you miss a semicolon at line 761 in w32term.h.

Previous problems are fixed, but I still can not compile the latest branch. There are more problems:

1. I need `nmake bootstrap' but in 24.2 release I can compile directly with `nmake'

2. In lisp.h it begins to define ARRAY_MARK_FLAG as PTRDIFF_MIN, however,
    definition of PTRDIFF_MIN is in stdint.h, which is not included. And even if included, in nt/inc/stdint.h,
    various *_MIN (including PTRDIFF_MIN) are not defined

3. In w32.c DeviceIoControl, it uses a FSCTL_GET_REPARSE_POINT that is only defined for _MSC_VER >= 0x0500

4. In xdisp.c, start_hourglass function, w32_note_current_window is declared (as extern) and used in the middle of
    the function, causing an error message. Move the declaration to the beginning of the function solved the problem.

After fixing the above problems, finally I can make a temacs.exe, but while loading subr.el, temacs reported an
error message saying `Invalid funtion: "DEAD"'. I do not know where the function `dead' comes from.

Maybe you can close the previous bug, but for the latest branch, more fixes are needed.



2012/11/18 Eli Zaretskii <eliz@gnu.org>
> Date: Wed, 14 Nov 2012 09:14:45 +0800
> From: 李丁 <iamliding@gmail.com>
> Cc: 12878@debbugs.gnu.org
>
> Sure, adding a correct prototype is just like including the correct
> header file if Windows 9X really supports this function. But you
> should be careful checking compiler versions, in case that
> redefinition error occur.

I added the prototype of EnumSystemLocales to one of the w32 headers.
Please try the latest emacs-24 branch (revision 110902 or later) and
see if you still have problems building it.

> Actually, I encountered several redefinition problems during compilation.
> For example in w32term.c:
>
>     #ifndef GLYPHSET
>     /* Pre Windows 2000, this was not available, but define it here so
>        that Emacs compiled on such a platform will run on newer versions.
>  */
>     ...
>     #endif
>
> VC 11.0 does not define GLYPHSET either (or not included), but it does have
> the definitions,
> and above code leads to redefinition error.

This is no longer in the development sources of the emacs-24 branch.
This code fragment is now guarded by "#if _WIN32_WINNT < 0x0500",
which I think should work for you, as long as you don't define
_WIN32_WINNT to a value higher than 0x0400.

> And this in w32term.c too:
>
>     /* Reportedly, MSVC does not have this in its headers.  */
>     #ifdef _MSC_VER
>     DECLARE_HANDLE(HMONITOR);
>     #endif
>
> VC 11.0 does have HMONITOR, and another redefinition error.

This is now guarded by "#if defined (_MSC_VER) && _WIN32_WINNT < 0x0500"
so again, I don't think that it should give you trouble with
_WIN32_WINNT set at 0x0400.

Please try the latest emacs-24 branch, and if it works for you, I will
close the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]