Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Link error.

xxwxxw
Beginner
691 Views
I still have the problem with converting CVF into IVF.
In cvf, it seems that these two lines tried to close window after finishing the simulation. But in IVF, there is link error about the ABORT.
CLOSE(IFILERESD, STATUS='DELETE', ERR=4123)
4123 CALL ABORT('MODSIM HAS ENDED')
MODSIM error LNK2019: unresolved external symbol _ABORT@8 referenced in function _MAIN__
So what kind of library shall I includefor using ABORT. Thank.
xiaowei
0 Kudos
4 Replies
Jugoslav_Dujic
Valued Contributor II
691 Views
USE IFPORT, as clearly stated in the Manual.

Jugoslav
0 Kudos
Steven_L_Intel1
Employee
691 Views
Expanding - if you are not using the compiler's default calling conventions - and a project converted from CVF gets set to use CVF conventions - you must add USE IFPORT to make the portability routines available.

An alternative is to change the calling convention to the Intel default - this is done on the External Procedures project property page. Don't forget to also change the string length passing to default.
0 Kudos
xxwxxw
Beginner
691 Views
I tried both methods.
First i added the
USE IFPORT
It came out the message that
Error: The attributes of this name conflict with those made accessible by a USE statement. [ITIME]
Error: This name has already been used as an external subroutine name. [ITIME]
where is :
COMMON /CHRONO/ TIME,TSTEP,TTIME,TMIN,ITIME
........................
ITIME=ITIME+1
It seems that the variable ITIME conflict with the USE IFPORT.
"An alternative is to change the calling convention to the Intel default - this is done on the External Procedures project property page. Don't forget to also change the string length passing to default. "
Then I tried to use the second method to change the calling convection to the Default. But I couldn't find there is "Default" set for the "change the string lenth passing". The only tow choices are:
"After Individual String Argument" and "After All Arguments"
I choosed thesecond set for the string length passing. The code can be complied. But the problem was the simulation messed up. And some public variables would changed correctly.
xiaowei
0 Kudos
Steven_L_Intel1
Employee
691 Views
Ok, then use:

USE IFPORT, only: ABORT

It was not clear that your application used non-Fortran routines that relied on CVF conventions.
0 Kudos
Reply