Sådan bruger du MinGW-W64 ld til at linke med iforts dll på Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et bibliotek udarbejdet af Intel Fortran Compilers på Windows


Den har to filer foo.dll og foo.lib


Fordi funktionsnavnet dekoration af Windows 's ifort er anderledes med gfortran eller linux' s ifort, når jeg direkte linker til foo.lib (-lfoo) vil det forårsage undefined reference to 'bar\_'.


Jeg bruger pexports til at generere def-fil og redigere sådan


LIBRARY foo.dll
EXPORTS
bar\_ = bar
...


og brug dlltool -d foo.def -l foo.a til at lave en .a-fil


Jeg kan linke til foo.a med succes, men når programmet kører, kaster det


The specified procedure could not be found.


Entry Point Not Found


Hvordan kan jeg direkte forbinde bar\_ -funktionen i kildeobjektet til bar -funktionen i dll?


Jeg vil ikke skrive en kæde.


P. S.


Jeg havde også forsøgt at statisk link til originale Linux 's .a på Mingw-w64 på Windows, ld showet could not read symbols: Invalid operation.

Bedste reference