Author |
Message |
Evangelos Boutsiani #1 / 11
|
Building DLLs with Compaq Visual Fortran and Intel Visual Fortran
Dear all, I have lately decided to upgrade from (CVF) Compaq Visual fortran 6.6 to (IVF) Intel Visual Fortran 8.1 My main task is CFD where I usually built "user-subroutines" in the form of a user.dll file which the commercial solver can use and thus implements my models. Up till now everything worked fine with CVF. I tried to compile and link an already used library with IVF. I have used exactly the same compiler and linker switches with the exception of /iface:cvf and IVF produced the dll with no errors. However, the solver just hangs ... I thought about checking the "contents" of the 2 dll files, which are as follows: (CVF) ---------------------------------------------------------------------------------------------------------------------------------------- Dump of file ubound.dll File Type: DLL Section contains the following exports for ubound.dll 00000000 characteristics 4200DDD4 time date stamp Wed Feb 02 15:04:04 2005 0.00 version 1 ordinal base 6 number of functions 6 number of names ordinal hint RVA name 1 0 00009EC8 UBOUND 3 1 000094C0 UEXE 5 2 000096A2 ULIB_CHECK_VERSION
Summary 1000 .data 4000 .rdata 2000 .reloc A000 .text ------------------------------------------------------------------------------------------------------------------------------------------- and (IVF) -------------------------------------------------------------------------------------------------------------------------------------------- Dump of file ubound.dll File Type: DLL Section contains the following exports for ubound.dll 00000000 characteristics 4200E4BA time date stamp Wed Feb 02 15:33:30 2005 0.00 version 1 ordinal base 3 number of functions 3 number of names ordinal hint RVA name
Summary 1000 .data 1000 .data1 6000 .rdata 2000 .reloc A000 .text --------------------------------------------------------------------------------------------------------------------------------------- I CANNOT HELP NOTICING THE RESEMBLANCE and definately don't understand the difference!!! However, I know nothing about dlls and have no idea how to resolve this issue. Any suggestions would be deeply appreciated. Vangelis
|
Mon, 23 Jul 2007 01:48:26 GMT |
|
|
Gerald F. Thoma #2 / 11
|
Building DLLs with Compaq Visual Fortran and Intel Visual Fortran
Why not show the !DEC metacommands that DLLEXPORT? On the face of it your CVF DLL has a .def and more but your IVF DLL doesn't. What gives? -- You're Welcome, Gerry T. ______ "Facts are meaningless. You could use facts to prove anything that's even remotely true." -- Homer Simpson.
Quote: > Dear all, > I have lately decided to upgrade from (CVF) Compaq Visual Fortran 6.6 to > (IVF) Intel Visual Fortran 8.1 > My main task is CFD where I usually built "user-subroutines" in the form of > a user.dll file which the commercial solver can use and thus implements my > models. > Up till now everything worked fine with CVF. I tried to compile and link an > already used library with IVF. I have used exactly the same compiler and > linker switches with the exception of /iface:cvf and IVF produced the dll > with no errors. However, the solver just hangs ... > I thought about checking the "contents" of the 2 dll files, which are as > follows: > (CVF) > -------------------------------------------------------------------------
--------------------------------------------------------------- Quote: > Dump of file ubound.dll > File Type: DLL > Section contains the following exports for ubound.dll > 00000000 characteristics > 4200DDD4 time date stamp Wed Feb 02 15:04:04 2005 > 0.00 version > 1 ordinal base > 6 number of functions > 6 number of names > ordinal hint RVA name > 1 0 00009EC8 UBOUND > 3 1 000094C0 UEXE > 5 2 000096A2 ULIB_CHECK_VERSION
> Summary > 1000 .data > 4000 .rdata > 2000 .reloc > A000 .text > -------------------------------------------------------------------------
------------------------------------------------------------------ Quote: > and > (IVF) > -------------------------------------------------------------------------
------------------------------------------------------------------- Quote: > Dump of file ubound.dll > File Type: DLL > Section contains the following exports for ubound.dll > 00000000 characteristics > 4200E4BA time date stamp Wed Feb 02 15:33:30 2005 > 0.00 version > 1 ordinal base > 3 number of functions > 3 number of names > ordinal hint RVA name
> Summary > 1000 .data > 1000 .data1 > 6000 .rdata > 2000 .reloc > A000 .text > -------------------------------------------------------------------------
-------------------------------------------------------------- Quote: > I CANNOT HELP NOTICING THE RESEMBLANCE and definately don't understand the > difference!!! However, I know nothing about dlls and have no idea how to > resolve this issue. Any suggestions would be deeply appreciated. > Vangelis
|
Wed, 25 Jul 2007 17:14:57 GMT |
|
|
bv #3 / 11
|
Building DLLs with Compaq Visual Fortran and Intel Visual Fortran
"Evangelos Boutsianis" wrote Quote: > I have lately decided to upgrade from (CVF) Compaq Visual Fortran 6.6 to > (IVF) Intel Visual Fortran 8.1
Sorry, as you have discovered to your own detriment, you have upgraded in chronological sense only - IVF is in no way, shape or form an upgrade from the CVF compiler. If it still matters, dll diffs you're seeing are probably due to a change in calling conventions - a misguided attempt to cut out their turf from the CVF user base.
|
Thu, 26 Jul 2007 08:24:31 GMT |
|
|
Gerald F. Thoma #4 / 11
|
Building DLLs with Compaq Visual Fortran and Intel Visual Fortran
Quote: > "Evangelos Boutsianis" wrote > > I have lately decided to upgrade from (CVF) Compaq Visual Fortran 6.6 to > > (IVF) Intel Visual Fortran 8.1 > Sorry, as you have discovered to your own detriment, you have upgraded > in chronological sense only - IVF is in no way, shape or form an upgrade > from the CVF compiler. > If it still matters, dll diffs you're seeing are probably due to a > change in calling conventions - a misguided attempt to cut out their > turf from the CVF user base.
Agreed: IVF is a major downgrade wrt CVF. I've previously expounded here and on the Intel IVF forum (where they're not so naive as to dismiss user criticisms as the outburst of one who doesn't comply with the drug-pushing prescriptions of the c.l.f. unqualified) on IVF's inadequacies vis-a-vis CVF and after two years of floundering, IVF has yet to measure up to the competition, the unsupported Microsoft (Digital (Compaq) ) VF (MSVF). Not even Microsoft would be so malicious as to change the default calling convention between their former (sic MSVF) Fortran 90/95 and current C++ compilers. Intel did so, with apparent impunity. Well, we'll see! It's been standard CVF support recommendation that .lib generation and distribution be favored over the use of a .def. This is poor advise which MSVF never promoted. -- You're Welcome, Gerry T. ______ "I promise there will be fewer nuclear disasters with me as your mayor than with me as your nuclear safety inspector." Homer Simpson
|
Thu, 26 Jul 2007 12:17:27 GMT |
|
|
Aardpi #5 / 11
|
Building DLLs with Compaq Visual Fortran and Intel Visual Fortran
<snip> Quote: > It's been standard CVF support recommendation that .lib generation and > distribution be favored over the use of a .def. This is poor advise which > MSVF never promoted.
"advice", not "advise". You under-educated arse-fart.
|
Fri, 27 Jul 2007 04:01:16 GMT |
|
|
beliav.. #6 / 11
|
Building DLLs with Compaq Visual Fortran and Intel Visual Fortran
PLEASE don't argue with Gerry Thomas. We are unable to grasp his profound insights, and provoking further comment from him wastes his time and ours. "Never wrestle with a pig. You both get dirty and the pig likes it."
|
Fri, 27 Jul 2007 04:13:22 GMT |
|
|
Evangelos Boutsiani #7 / 11
|
Building DLLs with Compaq Visual Fortran and Intel Visual Fortran
Let me try to give you the information that might be missing. In both attempts I have used the same source file that includes the following: SUBROUTINE ubound(bc_index, var_index, face_index, xfc, yfc, zfc) !DEC$ ATTRIBUTES DLLEXPORT :: ubound Should I change something here? Vangelis
Quote: > Why not show the !DEC metacommands that DLLEXPORT? > On the face of it your CVF DLL has a .def and more but your IVF DLL > doesn't. What gives? > -- > You're Welcome, > Gerry T. > ______ > "Facts are meaningless. You could use facts to prove anything that's even > remotely true." -- Homer Simpson.
>> Dear all, >> I have lately decided to upgrade from (CVF) Compaq Visual Fortran 6.6 to >> (IVF) Intel Visual Fortran 8.1 >> My main task is CFD where I usually built "user-subroutines" in the form > of >> a user.dll file which the commercial solver can use and thus implements > my >> models. >> Up till now everything worked fine with CVF. I tried to compile and link > an >> already used library with IVF. I have used exactly the same compiler and >> linker switches with the exception of /iface:cvf and IVF produced the dll >> with no errors. However, the solver just hangs ... >> I thought about checking the "contents" of the 2 dll files, which are as >> follows: >> (CVF) >> ------------------------------------------------------------------------- > --------------------------------------------------------------- >> Dump of file ubound.dll >> File Type: DLL >> Section contains the following exports for ubound.dll >> 00000000 characteristics >> 4200DDD4 time date stamp Wed Feb 02 15:04:04 2005 >> 0.00 version >> 1 ordinal base >> 6 number of functions >> 6 number of names >> ordinal hint RVA name >> 1 0 00009EC8 UBOUND >> 3 1 000094C0 UEXE >> 5 2 000096A2 ULIB_CHECK_VERSION
>> Summary >> 1000 .data >> 4000 .rdata >> 2000 .reloc >> A000 .text >> ------------------------------------------------------------------------- > ------------------------------------------------------------------ >> and >> (IVF) >> ------------------------------------------------------------------------- > ------------------------------------------------------------------- >> Dump of file ubound.dll >> File Type: DLL >> Section contains the following exports for ubound.dll >> 00000000 characteristics >> 4200E4BA time date stamp Wed Feb 02 15:33:30 2005 >> 0.00 version >> 1 ordinal base >> 3 number of functions >> 3 number of names >> ordinal hint RVA name
>> Summary >> 1000 .data >> 1000 .data1 >> 6000 .rdata >> 2000 .reloc >> A000 .text >> ------------------------------------------------------------------------- > -------------------------------------------------------------- >> I CANNOT HELP NOTICING THE RESEMBLANCE and definately don't understand > the >> difference!!! However, I know nothing about dlls and have no idea how to >> resolve this issue. Any suggestions would be deeply appreciated. >> Vangelis
|
Fri, 27 Jul 2007 06:47:07 GMT |
|
|
Aardpi #8 / 11
|
Building DLLs with Compaq Visual Fortran and Intel Visual Fortran
Quote:
> PLEASE don't argue with Gerry Thomas. We are unable to grasp his > profound insights, and provoking further comment from him wastes his > time and ours. > "Never wrestle with a pig. You both get dirty and the pig likes it."
Agreed, but sometimes you have to stand up to a bully. Just killfile me, and I'll get on with harassing him out-of-sight.
|
Fri, 27 Jul 2007 07:39:04 GMT |
|
|
Greg Linda #9 / 11
|
Building DLLs with Compaq Visual Fortran and Intel Visual Fortran
Quote:
>Agreed, but sometimes you have to stand up to a bully.
This is just Usenet... we call them kooks. You don't have to bother. If you do, killfiling you isn't enough, because 3rd parties will get drawn in. -- greg
|
Fri, 27 Jul 2007 07:56:08 GMT |
|
|
Gerald F. Thoma #10 / 11
|
Building DLLs with Compaq Visual Fortran and Intel Visual Fortran
Quote: > Let me try to give you the information that might be missing. In both > attempts I have used the same source file that > includes the following: > SUBROUTINE ubound(bc_index, var_index, face_index, xfc, yfc, zfc) > !DEC$ ATTRIBUTES DLLEXPORT :: ubound > Should I change something here?
Try: SUBROUTINE ubound [STDCALL, ALIAS:'_UBOUND'] (bc_index, var_index, face_index, xfc, yfc, zfc) implicit none integer(4) :: bc_index[REFERENCE], var_index[REFERENCE], face_index[REFERENCE] real(8) :: xfc[REFERENCE], yfc[REFERENCE], zfc[REFERENCE] (ditto for the other exports. If any arguments are arrays, append the dims to [REFERENCE], ie, [REFERENCE] (dims) ) Your .def file would look like: ;DEF file LIBRARY EXPORTS ; Function Ordinal ; -------- ------- ;F95 exports
When you dumpbin/exports you'll see: 1 0 00009EC8 ubound 2 1 000094C0 uexe 3 2 000096A2 ulib_check_version -- HTH, Gerry T. ______ "Some of those writing letters to this program are slightly fictitious but others definitely are not." --{*filter*} Cavett, host of The Detroit Symphony Orchestra, PBS Radio.
|
Fri, 27 Jul 2007 08:06:40 GMT |
|
|
Steve Lione #11 / 11
|
Building DLLs with Compaq Visual Fortran and Intel Visual Fortran
Quote:
>If it still matters, dll diffs you're seeing are probably due to a >change in calling conventions - a misguided attempt to cut out their >turf from the CVF user base.
The change in calling conventions was to improve compatibility with "the rest of the world". In hindsight, we should have made that change when we brought out DVF in 1997. The STDCALL default has been nothing but a headache for us and our customers over the years. Nevertheless, Intel Visual Fortran offers an /iface:cvf option, which is applied by default when you convert a project, that keeps the defaults the same as CVF. So there should not be problems in this regard. Steve Lionel Software Products Division Intel Corporation Nashua, NH User communities for Intel Software Development Products http://softwareforums.intel.com/ Intel Fortran Support http://developer.intel.com/software/products/support/
|
Sat, 28 Jul 2007 00:14:36 GMT |
|
|