Dear All (most probably charles!)
I am trying to generate a swig wrapper for a c++ class using the
following command line (I am doing this outside xplor currently)
swig -python -classptr -c++ -keyword -shadow -I/usr/include/python2.7
-I/home/garyt/programs/xplor-nih/2.31.0/CDSlib
-I/home/garyt/programs/xplor-nih/2.31.0/common
-I/home/garyt/programs/xplor-nih/2.31.0/intVar
-I/home/garyt/programs/xplor-nih/2.31.0/nmrPot
-I/home/garyt/programs/xplor-nih/2.31.0/vmd
-I/home/garyt/programs/xplor-nih/2.31.0/surfD
-I/home/garyt/programs/xplor-nih/2.31.0/cminpack
-I/home/garyt/programs/xplor-nih/2.31.0/sparta
-I/home/garyt/programs/xplor-nih/2.31.0/devel
-I/home/garyt/programs/xplor-nih/2.31.0/fortlib -I.
-I/home/garyt/programs/xplor-nih/2.31.0/python -o
pyEnsemblePotProxy_wrap.cpp pyEnsemblePotProxy.i
where pyEnsemblePotProxy.i contains an empty(ish) potential class
// -*- c++ -*-
#ifndef PY_ENSEMBLE_POT_PROXY_H
#define PY_ENSEMBLE_POT_PROXY_H 1
#include "ensemblePot.hh"
struct _object;
typedef _object PyObject;
class PyEnsemblePotProxy : public EnsemblePot {
public:
PyObject *m_obj;
PyEnsemblePotProxy(const String&, const String&, Simulation*,
PyObject *obj);
virtual ~PyEnsemblePotProxy();
void doRun();
virtual void run();
float_type rms();
int violations();
int numRestraints();
};
#endif // !PY_ENSEMBLE_POT_PROXY_H
however when I compile the resulting swig wrapper I get messages about
missing declarations for ?SWIGPY_POINTER_EXCEPTION?, ?SWIGPY_ConvertPtr?
and ?SWIGPY_fail'
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall
-Wstrict-prototypes -fPIC -DCPLUSPLUS=1 -DUSE_CDS_NAMESPACE=1
-I/home/garyt/programs/xplor-nih/2.31.0/common
-I/home/garyt/programs/xplor-nih/2.31.0/CDSlib
-I/home/garyt/programs/xplor-nih/2.31.0/arch/Linux_i686/include
-I/usr/include/python2.7 -I/home/garyt/programs/xplor-nih/2.31.0/CDSlib
-I/home/garyt/programs/xplor-nih/2.31.0/common
-I/home/garyt/programs/xplor-nih/2.31.0/intVar
-I/home/garyt/programs/xplor-nih/2.31.0/nmrPot
-I/home/garyt/programs/xplor-nih/2.31.0/vmd
-I/home/garyt/programs/xplor-nih/2.31.0/surfD
-I/home/garyt/programs/xplor-nih/2.31.0/cminpack
-I/home/garyt/programs/xplor-nih/2.31.0/sparta
-I/home/garyt/programs/xplor-nih/2.31.0/devel
-I/home/garyt/programs/xplor-nih/2.31.0/fortlib -I.
-I/home/garyt/programs/xplor-nih/2.31.0/python
-I/home/garyt/programs/xplor-nih/2.31.0/python/bin.Linux_i686/include/python2.6
-c pyEnsemblePotProxy_wrap.cpp -o
build/temp.linux-i686-2.6/pyEnsemblePotProxy_wrap.o
cc1plus: warning: command line option ?-Wstrict-prototypes? is valid for
Ada/C/ObjC but not for C++ [enabled by default]
pyEnsemblePotProxy_wrap.cpp: In function ?PyObject* wrapPot(rc_Pot&)?:
pyEnsemblePotProxy_wrap.cpp:3269:45: warning: deprecated conversion from
string constant to ?char*? [-Wwrite-strings]
pyEnsemblePotProxy_wrap.cpp: In function ?PyObject*
_wrap_new_PyEnsemblePotProxy__SWIG_0(PyObject*, PyObject*)?:
pyEnsemblePotProxy_wrap.cpp:4164:11: error: ?SWIGPY_POINTER_EXCEPTION?
was not declared in this scope
pyEnsemblePotProxy_wrap.cpp:4165:31: error: ?SWIGPY_ConvertPtr? was not
declared in this scope
pyEnsemblePotProxy_wrap.cpp:4166:7: error: ?SWIGPY_fail? was not
declared in this scope
pyEnsemblePotProxy_wrap.cpp: In function ?PyObject*
_wrap_PyEnsemblePotProxy_setEnsWeights(PyObject*, PyObject*, PyObject*)?:
pyEnsemblePotProxy_wrap.cpp:5911:43: error: ?SWIGPY_ConvertPtr? was not
declared in this scope
pyEnsemblePotProxy_wrap.cpp: In function ?PyObject*
_wrap_PyEnsemblePotProxy_setUseSimEnsWeights(PyObject*, PyObject*,
PyObject*)?:
pyEnsemblePotProxy_wrap.cpp:6065:27: error: ?SWIGPY_ConvertPtr? was not
declared in this scope
pyEnsemblePotProxy_wrap.cpp: In function ?PyObject*
_wrap_PyEnsemblePotProxy_setScale(PyObject*, PyObject*, PyObject*)?:
pyEnsemblePotProxy_wrap.cpp:6383:29: error: ?SWIGPY_ConvertPtr? was not
declared in this scope
pyEnsemblePotProxy_wrap.cpp: In function ?PyObject*
_wrap_PyEnsemblePotProxy_setThreshold(PyObject*, PyObject*, PyObject*)?:
pyEnsemblePotProxy_wrap.cpp:6537:29: error: ?SWIGPY_ConvertPtr? was not
declared in this scope
pyEnsemblePotProxy_wrap.cpp: In function ?PyObject*
_wrap_new_PyEnsemblePotProxy_LetterClass(PyObject*, PyObject*, PyObject*)?:
pyEnsemblePotProxy_wrap.cpp:7383:29: error: ?SWIGPY_ConvertPtr? was not
declared in this scope
pyEnsemblePotProxy_wrap.cpp:7427:29: error: ?SWIGPY_ConvertPtr? was not
declared in this scope
/home/garyt/programs/xplor-nih/2.31.0/CDSlib/cdsString.hh: At global scope:
/home/garyt/programs/xplor-nih/2.31.0/CDSlib/cdsString.hh:222:12:
warning: ?int cdsMapConvertToInt(const String&)? declared ?static? but
never defined [-Wunused-function]
/home/garyt/programs/xplor-nih/2.31.0/CDSlib/cdsMap.hh:134:12: warning:
?int cdsMapConvertToInt(int)? declared ?static? but never defined
[-Wunused-function]
/home/garyt/programs/xplor-nih/2.31.0/CDSlib/cdsMap.hh:135:12: warning:
?int cdsMapConvertToInt(double)? declared ?static? but never defined
[-Wunused-function]
pyEnsemblePotProxy_wrap.cpp:3283:15: warning: ?String
PyEnsemblePotProxy_help(PyEnsemblePotProxy*)? declared ?static? but
never defined [-Wunused-function]
I presume the problem is that I need to do
1. sed 's/SWIG_/SWIGPY_/g' pyEnsemblePotProxy_wrap.cpp >
pyEnsemblePotProxy_wrap_new.cpp
2. ~/programs/xplor-nih/2.31.0/bin/includeCC
pyEnsemblePotProxy_wrap_new.cpp --template-dir
/home/garyt/programs/xplor-nih/2.31.0_test_swig/CDSlib --cc 'c++'
-DX_MMAP_FLAGS=0 -DFORTRAN_INIT -O3 -DLINUX -D_REENTRANT -DNDEBUG
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/python/
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/arch/Linux_i686/include
-DSWIG_VERSION=20004
-I/usr/share/swig2.0/python -DCPLUSPLUS -DUSE_CDS_NAMESPACE
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/python/
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/arch/Linux_i686/include
-DSWIGPY_GLOBAL
-I. -I/usr/include/python2.7
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/CDSlib
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/common
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/intVar
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/nmrPot
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/vmd
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/surfD
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/cminpack
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/sparta
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/devel
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/fortlib
-DNIHXPLOR_VERSION='"2.31-custom"' -DPYTHON_VERSION='"2.7"'
-DSWIGPY_PYTHON_SILENT_MEMLEAK > pyEnsemblePotProxy_wrap_new_2.cpp
3. c++ -c pyEnsemblePotProxy_wrap_new_2.cpp -DX_MMAP_FLAGS=0
-DFORTRAN_INIT -O3 -DLINUX -D_REENTRANT -DNDEBUG
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/python/
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/arch/Linux_i686/include
-DSWIG_VERSION=20004
-I/usr/share/swig2.0/python -DCPLUSPLUS -DUSE_CDS_NAMESPACE
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/python/
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/arch/Linux_i686/include
-DSWIGPY_GLOBAL
-I. -I/usr/include/python2.7
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/CDSlib
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/common
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/intVar
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/nmrPot
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/vmd
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/surfD
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/cminpack
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/sparta
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/devel
-I/home/garyt/programs/xplor-nih/2.31.0_test_swig/fortlib
-DNIHXPLOR_VERSION='"2.31-custom"' -DPYTHON_VERSION='"2.7"'
-DSWIGPY_PYTHON_SILENT_MEMLEAK -DSWIGPY_NOINCLUDE
are these all the step I need to do?
nb swig -version gives me
SWIG Version 2.0.4
Compiled with g++ [i686-pc-linux-gnu]
Configured options: +pcre
Please see http://www.swig.org for reporting bugs and further information
regards
gary