I have a piece of code to call the C function GetAdaptersInfo to obtain the MAC address(es) of the computer.
The (abridged) code that works is
USE IFWINTY
! define Fortran equivalents of required C structures
INTERFACE
INTEGER (BOOL) FUNCTION GetAdaptersInfo(arg1, arg2) ! &
!& BIND(C, NAME='GetAdaptersInfo')
!DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'GetAdaptersInfo' :: GetAdaptersInfo
USE IFWINTY
INTEGER (LPLONG) :: arg1
INTEGER (LPLONG) :: arg2
END FUNCTION GetAdaptersInfo
END INTERFACE
dwRetVal = SIZEOF(AdapterInfo)
iret = GetAdaptersInfo(LOC(AdapterInfo), LOC(dwRetVal))
However, I would prefer to do it the ISO standard way instead of using specific compiler directives so if I have tried changing the code to
USE IFWINTY
USE ISO_C_BINDING
INTERFACE
INTEGER (BOOL) FUNCTION GetAdaptersInfo(arg1, arg2) &
& BIND(C, NAME='GetAdaptersInfo')
USE IFWINTY
USE ISO_C_BINDING
INTEGER (LPLONG) :: arg1
INTEGER (LPLONG) :: arg2
END FUNCTION GetAdaptersInfo
END INTERFACE
but then it fails in the linker step cannot resolve _GetAdaptersInfo
What am I doing wrong.
TIA
Clive