- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear All:
I am trying subModule for OOP methods in Fortran as test case. Followings are code snippets:
Module:
Module declarations type::Car character(len=10)::Name character(len=10)::Make contains procedure::print=>Print_CarInfo end type Car interface module subroutine Print_CarInfo(self) class(Car)::self end subroutine end interface End Module declarations
subModule:
subModule (declarations) definitions contains module subroutine Print_CarInfo(self) class(Car)::self print*,self%Name print*,self%Make end subroutine Print_CarInfo end subModule definitions
mainProgram:
program testOOP use declarations type(Car)::MyFirstCar MyFirstCar%Name='MyCar' MyFirstCar%Make='Hyundai' call MyFirstCar%print() end program testOOP
Compile Note: ifort module.f90 submodule.f90 main.f90
Error:
Undefined symbols for architecture x86_64: "_declarations_mp_print_", referenced from: _MAIN__ in iforteEEioN.o (maybe you meant: _declarations_mp_print_carinfo_) ld: symbol(s) not found for architecture x86_64
But same things compiled correctly with gfortran-6 and output as expected. By the way i am using ifort-18
Thanks in Advance,
Masrul
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There's a known bug in 18.0 provoked by this line in your first program:
procedure::print
=>Print_CarInfo
Unfortunately, the compiler was creating an external reference to a routine with the name "print".
This has been fixed for a future update.
Sorry for the inconvenience --
--Lorri

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page