Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!

Cannot link

Wagner__Urs
Beginner
105 Views

 

I am using a lib for a dll (newbie in fortran)

I get the link error

Severity    Code    Description    Project    File    Line    Suppression State
Error        error LNK2019: unresolved external symbol _TEXT@24 referenced in function _TEXTPU        PLO.obj        

In dll the functio is defined according dumpbin

    Exports

       ordinal    name

                  _LINEWIDTH
                  _MARKER
                  _PLOT_INI
                  _TEXT

What is the meaning of @24? What must I do that the linker is using _TEXT instead of _TEXT@24

Thanks

Urs

 

0 Kudos
4 Replies
Steve_Lionel
Black Belt Retired Employee
105 Views

@24 means that the caller of TEXT is using the STDCALL calling convention, which is not the default in Intel Fortran. The 24 indicates the number of bytes pushed on the stack for arguments that it expects the called routine to pop off before return. The calling conventions must be consistent or else you'll get stack corruption.

Are you using the /iface:cvf option or an ATTRIBUTES STDCALL directive in the source of TEXTPU?

JAlexiou
New Contributor I
105 Views

Try adding the alias compiler directive

    SUBROUTINE TEST()
    !DEC$ ATTRIBUTES DLLEXPORT :: TEST
    !DEC$ ATTRIBUTES ALIAS:'TEST :: TEST
    IMPLICIT NONE
        ! Code Starts Here
    END SUBROUTINE

 

Steve_Lionel
Black Belt Retired Employee
105 Views

TEXT is already being exported. Either it doesn't have the STDCALL attribute or it has a different number of arguments than in the caller (something I neglected to mention in my earlier response.)

Wagner__Urs
Beginner
105 Views

Thank You

I had set the calling convention to CVF. After changing to default it works fine.

Reply