Opened 18 years ago

Closed 17 years ago

#330 closed Bugs (Fixed)

Error in msvc in building inheritance.obj to build hello.pyd

Reported by: andre_mikulec Owned by: david_abrahams
Milestone: Component: python USE GITHUB
Version: None Severity:
Keywords: Cc:

Description

Error in msvc in building inheritance.obj to build hello.pyd

Hello,

I am trying to build the boost 1.31.0 sample extension 
hello.cpp.
I can not compile the file inheritance.cpp because the 
two
files containing some templates: adjacency_list.hpp and 
mem_fn.hpp can not compile.

Does anyone have any solutions?
Instead of Visual C++ 6.0 should I use a different 
compiler?
Anyone have any success on any other compiler?

Did anyone manage to build a hello.pyd?

Thank you very much.
Here is my script below (with embedded results).

rem I have MSVC 6.0 Service Pack 5  on Windows 2000 
Service Pack 3 default installs on F:
rem Python is located in F:\Python23
rem Boost is located in W:\boost_1_31_0
rem MSVC stlPort 4.6.2 installed, compiled and 
rem VC studio include dirs and libraries dirs configured to 
use it.

rem build boost.jam (so I have a bjam.exe for all below)
W:
vcvars32.bat
cd W:\boost_1_31_0\tools\build\jam_src
rem below since I have multilple toolsets installed I will 
always be specific.
.\build.bat msvc
rem result: 2 minutes later: NO WARN NO ERRORS
dir W:\boost_1_31_0\tools\build\jam_src\bin.ntx86\*
rem result: OK I have *jam*.exe executables: bjam.exe 
jam.exe mkjambase.exe yyacc.exe


rem build boost (using boost.jam (bjam from above))
W:
vcvars32.bat
set PYTHON_ROOT=F:\Python23
set PYTHON_VERSION=2.3
set PATH=%PATH%;W:\boost_1_31_0
\tools\build\jam_src\bin.ntx86
rem APPEND THE  BJAM PATH ABOVE TO THE SYSTEM 
ENVRONMENT VARIABLE PATH
cd W:\boost_1_31_0
rem below since I have multilple toolsets installed I will 
always be specific.
bjam "-sTOOLS=msvc" install


rem about 90 minutes later ERROR RESULTS FOLLOW: 
<<< errors.txt contents below >>>

cl  /Zm800 -nologo -GX -c  -DNDEBUG -DNDEBUG -
DBOOST_PYTHON_DYNAMIC_LIB -
DBOOST_PYTHON_SOURCE  /Ogity /O2 /Gs /Ob2 /GX /GR 
/MD  -I"bin\boost\libs\python\build"  -
I"W:\boost_1_31_0" -I"F:\Python23\include" -
I"F:\Program Files\Microsoft Visual Studio\VC98
\Include"   -
Fo"bin\boost\libs\python\build\boost_python.dll\msvc\rele
ase\inheritance.obj"  -Tp"W:\boost_1_31_0
\libs\python\build\../src/object/inheritance.cpp"

rem error below results below ...

F:\Program Files\Microsoft Visual Studio\VC98
\Bin>cl  /Zm800 -nologo -GX -c  -DNDEBUG -DNDEBUG -
DBOOST_PYTHON_DYNAMIC_LIB -
DBOOST_PYTHON_SOURCE  /Ogity /O2 /Gs /Ob2 /GX /GR 
/MD  -I"bin\boost\libs\python\build"  -
I"W:\boost_1_31_0" -I"F:\Python23\include"
-I"F:\Program Files\Microsoft Visual Studio\VC98
\Include"   -
Fo"bin\boost\libs\python\build\boost_python.dll\msvc\rele
ase\inheritance.obj"  -Tp"W:\boost_1_31_0
\libs\python\build\../src/object/inheritance.cpp"
inheritance.cpp
W:\boost_1_31_0\boost/graph/detail/adjacency_list.hpp
(1055) : error 
C2244: 'bidirectional_graph_helper_with_property<Config
>::remove_edge' : unable to resolve function overload
W:\boost_1_31_0\boost/graph/detail/adjacency_list.hpp
(1057) : error C2954: template definitions cannot nest
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2039: 'dm' : is not a member of '_mfi'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2143: syntax error : missing ';' before '<'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2501: 'dm' : missing storage-class or type specifiers
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2059: syntax error : ';'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2059: syntax error : '<'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2653: 'T' : is not a class or namespace name
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2645: no qualified name for pointer to member 
(found ':: *')
W:\boost_1_31_0\boost/mem_fn.hpp(320) : error 
C2143: syntax error : missing ';' before '}'
W:\boost_1_31_0\boost/mem_fn.hpp(320) : fatal error 
C1506: unrecoverable block scoping error

F:\Program Files\Microsoft Visual Studio\VC98\Bin>

W:\boost_1_31_0\boost/graph/detail/adjacency_list.hpp
(1055) : error 
C2244: 'bidirectional_graph_helper_with_property<Config
>::remove_edge' : unable to resolve function overload
W:\boost_1_31_0\boost/graph/detail/adjacency_list.hpp
(1057) : error C2954: template definitions cannot nest


rem the problem area in adjacency_list.hpp is here ...

template <class Config>
    inline void
    
bidirectional_graph_helper_with_property<Config>::remov
e_edge(typename Config::edge_descriptor e)
    {
      typedef typename Config::graph_type graph_type;
      graph_type& g = static_cast<graph_type&>(*this);
      boost::remove_edge(source(e, g), target(e, g), 
*this);
    }
    // O(E/V) or O(log(E/V))
    template <class EdgeOrIter, class Config>
    inline void
    remove_edge(EdgeOrIter e,
                
bidirectional_graph_helper_with_property<Config>& g_)
    {
      g_.remove_edge(e);
    }


W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2039: 'dm' : is not a member of '_mfi'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2143: syntax error : missing ';' before '<'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2501: 'dm' : missing storage-class or type specifiers
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2059: syntax error : ';'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2059: syntax error : '<'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2653: 'T' : is not a class or namespace name
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2645: no qualified name for pointer to member 
(found ':: *')
W:\boost_1_31_0\boost/mem_fn.hpp(320) : error 
C2143: syntax error : missing ';' before '}'
W:\boost_1_31_0\boost/mem_fn.hpp(320) : fatal error 
C1506: unrecoverable block scoping error


rem The problem area in mem_fn.hpp is here ...


creating a template class at the end of mem_fn.hpp
template<class R, class T> _mfi::dm<R, T> mem_fn(R 
T::*f)
{
    return _mfi::dm<R, T>(f);
}

} // namespace boost





rem build hello world
W:
vcvars32.bat
set PYTHON_ROOT=F:\Python23
set PYTHON_VERSION=2.3
set PATH=%PATH%;W:\boost_1_31_0
\tools\build\jam_src\bin.ntx86
rem APPEND THE  BJAM PATH ABOVE TO THE SYSTEM 
ENVRONMENT VARIABLE PATH
cd W:\boost_1_31_0\libs\python\example\tutorial
bjam -sTOOLS=msvc


The results are as follows

W:\boost_1_31_0\libs\python\example\tutorial>bjam -
sTOOLS=msvc
...found 1978 targets...
...updating 7 targets...
vc-
C++ ..\..\..\..\bin\boost\libs\python\build\boost_python.d
ll\msvc\debug\inheritance.obj
inheritance.cpp
W:\boost_1_31_0\boost/graph/detail/adjacency_list.hpp
(1055) : error 
C2244: 'bidirectional_graph_helper_with_property<Config
>::remove_edge' : unable to resolve function overload
W:\boost_1_31_0\boost/graph/detail/adjacency_list.hpp
(1057) : error C2954: template definitions cannot nest
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2039: 'dm' : is not a member of '_mfi'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2143: syntax error : missing ';' before '<'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2501: 'dm' : missing storage-class or type specifiers
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2059: syntax error : ';'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2059: syntax error : '<'
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2653: 'T' : is not a class or namespace name
W:\boost_1_31_0\boost/mem_fn.hpp(315) : error 
C2645: no qualified name for pointer to member 
(found ':: *')
W:\boost_1_31_0\boost/mem_fn.hpp(320) : error 
C2143: syntax error : missing ';' before '}'
W:\boost_1_31_0\boost/mem_fn.hpp(320) : fatal error 
C1506: unrecoverable block scoping error


    "cl"  /Zm800 -nologo -GX -c  -
DBOOST_PYTHON_DYNAMIC_LIB -
DBOOST_PYTHON_SOURCE  /Z7 /Od /Ob0 /GX /GR /MDd  
 -I"..\..\..\..\bin\boost\libs\python\build"  -
I"W:\boost_1_31_0" -I"F:\Python23\include" -
I"F:\PROGRA~1\MICROS~3\VC98\include"   -Fo"..\..\..\..
\bin\boost\libs\python\build\boost_python.dll\msvc\debug
\inheritance.obj"  -Tp"W:\boost_1_31_0
\libs\python\build\../src/object/inheritance.cpp"

...failed vc-
C++ ..\..\..\..\bin\boost\libs\python\build\boost_python.d
ll\msvc\debug\inheritance.obj...
...skipped <@boost!libs!python!
build\boost_python.dll\msvc\debug>boost_python.CMD 
for lack of <@boost!libs!python!
build\boost_python.dll\msvc\debug>inheritance.obj...
...skipped <@boost!libs!python!
build\boost_python.dll\msvc\debug>boost_python.dll for 
lack of <@boost!libs!python!
build\boost_python.dll\msvc\debug>boost_python.CMD...
...skipped <@boost!libs!python!
build\boost_python.dll\msvc\debug>boost_python.lib for 
lack of <@boost!libs!python!
build\boost_python.dll\msvc\debug>boost_python.CMD...
...skipped <@boost!libs!python!example!
tutorial\hello.pyd\msvc\debug>hello.CMD for lack of 
<@boost!libs!python!
build\boost_python.dll\msvc\debug>boost_python.lib...
...skipped <@boost!libs!python!example!
tutorial\hello.pyd\msvc\debug>hello.pyd for lack of 
<@boost!libs!python!
build\boost_python.dll\msvc\debug>boost_python.dll...
...skipped <@boost!libs!python!example!
tutorial\hello.pyd\msvc\debug>hello.lib for lack of 
<@boost!libs!python!
build\boost_python.dll\msvc\debug>boost_python.dll...
...failed updating 1 target...
...skipped 6 targets...

W:\boost_1_31_0\libs\python\example\tutorial>dir 
hello*.*
rem results: ALL hello.CMD hello.pyd hello.lib NOT FOUND

Any Ideas about a possible solution?

AIM
Andre_Mikulec@Hotmail.com

Change History (1)

comment:1 by david_abrahams, 17 years ago

Status: assignedclosed
Logged In: YES 
user_id=52572

Works fine in 1.33.0 AFAICT.
Note: See TracTickets for help on using tickets.