- 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