2010-06-29 13 views
0

J'écris dans fortran et compiler en utilisant le compilateur g95.OPEN et WRITE aux fichiers dans FORTRAN DLL

Je dois avoir une sortie de fichier journal vers une DLL que j'écris, qui est en train de lier et d'exécuter avec le programme maître, mais qui produit des résultats incorrects. Je ne sais pas beaucoup sur FORTRAN, mais je l'ai fait obtenir le code suivant pour produire une sortie dans un fichier EXE i compilé:

OPEN(UNIT=3, FILE='LOG.txt', STATUS='NEW') 
    WRITE(3,*) "the gospel of PTP is bestowed upon the file." 
    CLOSE(3) 

cela fonctionne dans un stand alone EXE, quand je le lance, il produit un fichier la chaîne à l'intérieur. Mais quand j'essaie de l'inclure dans la DLL sur laquelle je travaille, il plante tout. quand je le commente, tout fonctionne et fonctionne à nouveau, mais ne produit évidemment pas la sortie désirée.

Des idées? N'importe quel FORTRAN ou g95 personnes?

+0

Vous devez avoir une sortie de fichier journal vers une DLL '? Ou vice versa* ? –

Répondre

0

Une estimation qui pourrait aider, ou non, je l'ai rarement utilisé DLL Fortran pour écrire quoi que ce soit directement:

  • Pour où pensez-vous que la DLL pour écrire le fichier « LOG.TXT »? Est-ce que c'est peut-être essayer d'écrire dans un endroit où il est interdit d'écrire? Pourquoi cela écraserait votre programme? Je ne suis pas très sûr, mais c'est quelque chose à vérifier. Je suppose que vous avez exécuté la version EXE de votre code à partir de l'un de vos répertoires utilisateur.

Et, un commentaire:

  • évite en général les numéros d'unité à un seul chiffre en Fortran. La plupart des O/S les utilisent pour stdout, stderr, etc, et bien qu'il y ait des affectations habituelles (par exemple stdout est 5 je pense, et stderr 6) elles ne sont pas définies dans la norme Fortran et les compilateurs sont libres d'utiliser des numéros d'unité comme ils le veulent.