Bij voorbaat excuses voor de noobvraag, maar ik kom er echt niet uit. Ik heb van mn prof een fortran programma gehad die ik moet compileren (alvorens ik hem moet gaan aanpassen). Ik heb alleen totaal geen ervaring met fortran, dus ik loop een beetje vast bij het linken.
Het programma bestaat uit 1 main, en nog een serie subroutines. Daarnaast maakt het gebruik van wat IMSL fortran libraries. Ik heb achtereenvolgens MS Visual Studio 2008, Intel Visual Fortran compiler 10.1, en IMSL Fortran Numerical Library 6.0.for Intel Fortran geinstalleerd. Volgens mij werkt dat allemaal.
Nu heb ik dus een nieuw project aangemaakt waar ik alle f90 source files heb ge-add. Bij het builden krijg ik onder andere deze error:
DRNNOR is een functie uit de IMSL lib. Die heeft hij dus niet gevonden. In de manual van IMSL staat dat ik dit als volgt moet regelen:
Mijn vragen zijn:
Het programma bestaat uit 1 main, en nog een serie subroutines. Daarnaast maakt het gebruik van wat IMSL fortran libraries. Ik heb achtereenvolgens MS Visual Studio 2008, Intel Visual Fortran compiler 10.1, en IMSL Fortran Numerical Library 6.0.for Intel Fortran geinstalleerd. Volgens mij werkt dat allemaal.
Nu heb ik dus een nieuw project aangemaakt waar ik alle f90 source files heb ge-add. Bij het builden krijg ik onder andere deze error:
code:
1
| error LNK2019: unresolved external symbol _DRNNOR referenced in function _SAMPLE_PRIOR. |
DRNNOR is een functie uit de IMSL lib. Die heeft hij dus niet gevonden. In de manual van IMSL staat dat ik dit als volgt moet regelen:
Dit snap ik niet goed. Ik heb geprobeerd include 'link_fnl_shared.h' toe toe voegen bovenaan mijn document. Toen kreeg ik een error dat hij deze file niet kon vinden, dus heb ik C:\Program Files\VNI\imsl\fnl600\IA32\include\dll toevoegd aan de additional include directories. Hij compilet nu wel zonder errors. Echter, als ik de exe run die nu in /debug is gecreeerd, krijg ik allerlei DLL errors. Dit is niet de bedoeling, het moet gewoon een standalone exe worden.4) Next, you must specify the IMSL libraries to link against in your
project. For simplicity, we will build a dynamically linked program,
which links in the DLL version of IMSL. You can do this by explicitly
adding imsl_dll.lib to your Visual Studio Solution, in the Project
Explorer or use the 'link_fnl_shared.h' include file directly in your
source code. In your Fortran source code, add the following header
file in an include statement:
include 'link_fnl_shared.h'
Mijn vragen zijn:
- Wat wordt bedoeld met 'explicitly adding imsl_dll.lib to your Visual Studio Solution, in the Project Explorer' ? Lost dat het probleem met de DLL's op?
- Is er een andere optie of iets dergelijks dat hij zo veel mogelijk DLL's meeneemt in de executeble zelf?
- Hoe kan het dat mijn exe (die dus nog dll's nodig heeft) meer dan 1mb is, terwijl de exe van mijn prof minder dan 200k was?