Thanks, Tony.

I did some digging. The change in question was in svn revision 57. It appears to have introduced some sort of order-of-declaration problem between BCC and the rest of the world. ;-)

Below is an svn patch that works for me, and the svn diff for if_ole.cpp.

Cheers,
-Mark



svn patch:

Index: if_ole.cpp
===================================================================
--- if_ole.cpp  (revision 63)
+++ if_ole.cpp  (working copy)
@@ -13,14 +13,19 @@
  * See os_mswin.c for the client side.
  */

+#ifndef __BORLANDC__
 extern "C" {
 #include "vim.h"
 }
+#endif

 #include <windows.h>
 #include <oleauto.h>

 extern "C" {
+#ifdef __BORLANDC__
+#include "vim.h"
+#endif
 extern HWND s_hwnd;
 extern HWND vim_parent_hwnd;
 }




The diff from revision 56:

D:\vim7\vim7\src>svn diff --revision 56:63 if_ole.cpp
Index: if_ole.cpp
===================================================================
--- if_ole.cpp  (revision 56)
+++ if_ole.cpp  (revision 63)
@@ -13,11 +13,14 @@
  * See os_mswin.c for the client side.
  */

+extern "C" {
+#include "vim.h"
+}
+
 #include <windows.h>
 #include <oleauto.h>

 extern "C" {
-#include "vim.h"
 extern HWND s_hwnd;
 extern HWND vim_parent_hwnd;
 }



A.J.Mechelynck wrote:
Mark S. Williams wrote:
Hello all,

I've been successfully building Vim 7 using BCC 5.5, but it seems a recent update has broken it:

D:\vim7>build
U  vim7\configure
U  vim7\runtime\plugin\matchparen.vim
U  vim7\runtime\autoload\gzip.vim
U  vim7\runtime\scripts.vim
U  vim7\src\netbeans.c
U  vim7\src\option.c
U  vim7\src\if_perl.xs
U  vim7\src\if_ole.cpp
U  vim7\src\version.c
U  vim7\src\configure
Checked out revision 63.

<snip>

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
if_ole.cpp:
Error E2132 d:\borland\bcc55\include\stdlib.h 434: Templates and overloaded operators cannot have C linkage Error E2040 d:\borland\bcc55\include\stdlib.h 434: Declaration terminated incorrectly
Error E2190 d:\borland\bcc55\include\stdlib.h 498: Unexpected }
Error E2316 d:\borland\bcc55\include\stdlib.h 505: '_argc' is not a member of 'std'
Error E2272 d:\borland\bcc55\include\stdlib.h 505: Identifier expected
Error E2316 d:\borland\bcc55\include\stdlib.h 506: '_argv' is not a member of 'std'
Error E2272 d:\borland\bcc55\include\stdlib.h 506: Identifier expected
Error E2316 d:\borland\bcc55\include\stdlib.h 603: 'min' is not a member of 'std'
Error E2272 d:\borland\bcc55\include\stdlib.h 603: Identifier expected
Error E2316 d:\borland\bcc55\include\stdlib.h 604: 'max' is not a member of 'std'
Error E2272 d:\borland\bcc55\include\stdlib.h 604: Identifier expected
*** 11 errors in Compile ***

** error 1 ** deleting WIN32\oleobj\if_ole.obj

Cheers,
-Mark



What surprises me is that all the errors above appears to be in stdlib.h, a Borland source file, not in a Vim source file. If it were a collision between a declaration in a Vim source and a declaration in a system C file, the messages ought to be more explicit. You might try and see what is declared ar line 434 of stdlib.h to see what the error might be (if there is one) in the Vim source.

I've had trouble building with BCC32 in the past. Trouble enough that I've switched to cygwin, see http://users.skynet.be/antoine.mechelynck/vim/compile.htm . However, nowadays Steve Hall is distributing upgraded Vim installers for Windows (currently 7.0.51), see https://sourceforge.net/project/showfiles.php?group_id=43866&package_id=39721 so if the executables contained therein include what you need, maybe you don't have to compile at all anymore. :-) You may see the ":version" text by clicking on "Notes" next to the version number; basically it's a big GUI version, +ole -mzscheme +perl/dyn +python/dyn +ruby/dyn +tcl/dyn. A similar console version is included.


Best regards,
Tony.


Reply via email to