Calling C++ from FORTRAN

From: Paul Nord (PNORD@exodus.valpo.edu)
Date: Thu Oct 01 1998 - 23:03:49 MEST


Good Day,

I'd like to be able to drive the root system from a FORTRAN program.

I thought that this should work.  Can anyone tell me what's wrong?

C test.f
C
C Functions to demonstrate how to interact with the Root based
C Event Display.
C
C*****************************************************************************

      program test

      implicit none


      CALL initdisplay()

      CALL displayevent()

      END


-------
/*****************************************
* FortranInterface.C
*
* Functions to interface Fortran and C routines for Event Display.
*
******************************************/

#include "TROOT.h"
#include "TRint.h"
#include "MDisplay.h"

extern void  InitGui();  // initializer for GUI needed for interactive
interface
VoidFuncPtr_t initfuncs[] = { InitGui, 0 };

// Initialize the ROOT system
TROOT root("Rint","The ROOT Interactive Interface", initfuncs);
TRint *theApp;
MDisplay *display;


int initdisplay_() {
    // Create interactive interface
    theApp = new TRint("ROOT example", NULL, 0, NULL, 0);
    display = new MDisplay("display");
    return(0);

}


int displayevent_() {
    theApp->Run(kTRUE);
    return(0);
}
--------------------------


And the makefile:

CXX           = cxx
CXXFLAGS      = -O -D__osf__ -D__alpha -I$(ROOTSYS)/include -V
LD            = cxx
LDFLAGS       = -g
SOFLAGS       = -Wl,-expect_unresolved,* -call_shared
GLIBS         = $(ROOTSYS)/lib/*.so -lX11 -lm -lPW  -lXm -lXt

F77FLAGS    = +ppu -K -V -cross_reference -names as_is

test.o : test.f
        f77 -c $(F77FLAGS) test.f -o test.o

FortranInterface.o : FortranInterface.C


ftest : $(TEST_OBJS)
        @echo "Creating Fortran frontend ..."
        f77 -o ftest $(GLIBS) -lcxx -K $(TEST_OBJS) -cross_reference -V
        @echo "done"

______________________

(Trust me that the rest of the TEST_OBJS compile just fine.  And that the list
of files does include test.o and FortranInterface.o).  

The error from the f77 of ftest is:

ld:
Unresolved:
initdisplay_
displayevent_
fort: Severe: Failed while trying to link.
make: *** [ftest] Error 1

???,
Paul Nord



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:38 MET