- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The code below is part of file recipes.f90 which is the source code for my user library librecipes.lib. It originally linked with my main program and worked correctly.
Then I decided to change it to a module by adding to recipes.f90 the text:
module recipes
Contains
....The same code as before....
end module recipes
Now when I produce the recipes.mod and librecipes.lib files there are no errors, nor in compiling the main program source code files into .obj files. But when linking, I get the following message:
librecipes.lib(recipes.obj): error LNK2001: unresolved external symbol _COS_VEC@8
Cos_Vec is only called by Cosfl_Sla and is not used elsewhere. As a work-around, I commented Cosfl_Sla out of recipes.f90 and successfully used Cos_Vec in the main program with appropriate arguments. But I am baffled by this one. Would someone please point out my stupid mistake.
!
function Cosfl_Sla(xa,x,u)
!
! Function Cosfl_Sla calculates the cosine of the angle between
! the flight line of the projectile and its sight line from the
! tracking radar antenna.
!
! Arguments:
! xa(3) Co-ordinates of radar antenna.
! x(3) Co-ordinates of projectile.
! u(3) Velocity vectors of projectile.
!
implicit none
real*8, intent(in) :: xa(3), x(3), u(3)
real*8 x1(3), Cosfl_Sla, Cos_Vec
x1 = x-xa
Cosfl_Sla = Cos_Vec(x1,u)
end function Cosfl_Sla
!
function Cos_Vec(a,b)
!
! Function Cos_Vec calculates the cosine of the angle between
! vectors a & b.
! Arguments : a(3) First vector.
! b(3) Second vector.
!
implicit none
real*8, intent(in) :: a(3), b(3)
real*8 a2, b2, ab, Cos_Vec
a2 = Dot_Product(a,a)
b2 = Dot_Product(b,b)
ab = Dot_Product(a,b)
if (a2 == 0.D0 .OR. b2 == 0.D0) then
Cos_Vec = 1.D0
else
Cos_Vec = ab/DSQRT(a2*b2)
end if
end function Cos_Vec
Alan
Then I decided to change it to a module by adding to recipes.f90 the text:
module recipes
Contains
....The same code as before....
end module recipes
Now when I produce the recipes.mod and librecipes.lib files there are no errors, nor in compiling the main program source code files into .obj files. But when linking, I get the following message:
librecipes.lib(recipes.obj): error LNK2001: unresolved external symbol _COS_VEC@8
Cos_Vec is only called by Cosfl_Sla and is not used elsewhere. As a work-around, I commented Cosfl_Sla out of recipes.f90 and successfully used Cos_Vec in the main program with appropriate arguments. But I am baffled by this one. Would someone please point out my stupid mistake.
!
function Cosfl_Sla(xa,x,u)
!
! Function Cosfl_Sla calculates the cosine of the angle between
! the flight line of the projectile and its sight line from the
! tracking radar antenna.
!
! Arguments:
! xa(3) Co-ordinates of radar antenna.
! x(3) Co-ordinates of projectile.
! u(3) Velocity vectors of projectile.
!
implicit none
real*8, intent(in) :: xa(3), x(3), u(3)
real*8 x1(3), Cosfl_Sla, Cos_Vec
x1 = x-xa
Cosfl_Sla = Cos_Vec(x1,u)
end function Cosfl_Sla
!
function Cos_Vec(a,b)
!
! Function Cos_Vec calculates the cosine of the angle between
! vectors a & b.
! Arguments : a(3) First vector.
! b(3) Second vector.
!
implicit none
real*8, intent(in) :: a(3), b(3)
real*8 a2, b2, ab, Cos_Vec
a2 = Dot_Product(a,a)
b2 = Dot_Product(b,b)
ab = Dot_Product(a,b)
if (a2 == 0.D0 .OR. b2 == 0.D0) then
Cos_Vec = 1.D0
else
Cos_Vec = ab/DSQRT(a2*b2)
end if
end function Cos_Vec
Alan
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
My apologies for the double posting - a bit of finger trouble.
I have found my stupid mistake, an almost infallible result of posting such things on the forum.
I should have removed the declaration of Cos_Vec from Cosfl_Sla when converting the file to a module.
Alan
I have found my stupid mistake, an almost infallible result of posting such things on the forum.
I should have removed the declaration of Cos_Vec from Cosfl_Sla when converting the file to a module.
Alan
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