robert@ireq.hydro.qc.ca (R.Meunier 8516) (02/07/91)
Contrary to what most people think, it is possible to mix c++
function with c. Here is how i have done it.
-------------------------------------------------------------
class A
{
private:
int i;
public:
A(int);
int inc();
}
A::A(int ii)
{
i=ii;
}
A::inc()
{
return(++i);
}
caddr_t newA(int ii)
{
return(new A(ii));
}
int incA(A *a)
{
return(a->inc());
}
-------------------------------------------------------------
That code is compile with a c++ compiler and put in a library
If i need that class in a standard c program, i call only
the function newA() and incA(). Their name is not mangle since
they are standard function. The c++ library libC.a as to be
provide to the compiler and someone have mention by mail that
the function _main() as to be called manually to initialise
static variables in classes.
I did not search very much but 'cout' were crashing my program,
since i didn't need them, i took them out.
Thank you to everyone who have replied
--
Robert Meunier Institut de Recherche d'Hydro-Quebec
Ingenieur 1800 Montee Ste-Julie, Varennes
Internet: robert@ireq.hydro.qc.ca Qc, Canada, J3X 1S1
maintainer: BASIC mailing list request to basic-request@ireq.hydro.qc.cafuchs@it.uka.de (Harald Fuchs) (02/09/91)
robert@ireq.hydro.qc.ca (R.Meunier 8516) writes: > Contrary to what most people think, it is possible to mix c++ >function with c. Here is how i have done it. >That code is compile with a c++ compiler and put in a library With which C++ compiler? > If i need that class in a standard c program, i call only >the function newA() and incA(). Their name is not mangle since >they are standard function. They _should_ be mangled unless you specify extern "C" { caddr_t newA (int); int incA (A*); } Seems that you have an obsolete C++ compiler. >The c++ library libC.a as to be >provide to the compiler and someone have mention by mail that >the function _main() as to be called manually to initialise >static variables in classes. The problem lies in global (extern) objects with constructors and/or destructors. If your extern "C" functions use them, you lose. -- Harald Fuchs <fuchs@telematik.informatik.uni-karlsruhe.de> <fuchs@telematik.informatik.uni-karlsruhe.dbp.de> *gulp*