- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@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?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Try adding the alias compiler directive
SUBROUTINE TEST() !DEC$ ATTRIBUTES DLLEXPORT :: TEST !DEC$ ATTRIBUTES ALIAS:'TEST :: TEST IMPLICIT NONE ! Code Starts Here END SUBROUTINE
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank You
I had set the calling convention to CVF. After changing to default it works fine.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page