2010-08-17 5 views
2

Je suis un modeleur qui programme ... Je ne m'appellerais jamais un programmeur, pourtant je programme en C# et en FORTRAN. J'ai un modèle FORTRAN que j'ai connecté à du code C# via une DLL. J'ai trouvé que je dois avoir un bloc commun afin de garder les variables en mémoire dans la DLL. J'ai également constaté que je ne peux pas employer plus d'une déclaration d'inclusion ... mon dossier d'inclusion pour les variables communes sont tous sans étiquette. Chapman (2008) "FORTRAN 95/2003 pour les scientifiques et les ingénieurs" déclare "La déclaration commune non marquée ne devrait jamais être utilisée ...".blocs communs, FORTRAN, et DLLs

Comment puis-je m'assurer que la mémoire n'est pas corrompue dans mon fichier commun? Je suppose que je peux expérimenter, mais j'espérais avoir de bons conseils à ce sujet. J'utilise le Lahey-F ver 7.2 dans Microsoft Visual Studio 2008

Quelqu'un, des idées?

Répondre

0

En tant que programmeur qui modélise ce que je voudrais savoir, c'est exactement pourquoi Chapman déclare que le COMMON non marqué ne devrait pas être utilisé. D'après ce dont je me souviens, le bloc commun vide/sans nom est global et doit être défini dans le programme principal. La seule façon d'être sûr de cela est probablement de faire une simple DLL Fortan puis de la désassembler pour voir ce qu'elle fait avec/où elle place le bloc commun.

Il serait également utile si vous pouviez coller des exemples d'erreurs, etc. lorsque vous essayez d'utiliser un commun nommé. Il se peut qu'il y ait une meilleure solution une fois que nous comprenons exactement ce qui ne fonctionne pas.

+0

Merci, je vais y jeter un coup d'oeil. – DavidAS

+0

Merci d'avoir posté un message. Oui, je suis d'accord avec l'utilisation de modules; mon programme est structuré autour de modules. Cependant, les modules (avec des variables locales et globales (publiques)) ne restent pas en mémoire lorsqu'ils sont utilisés dans une DLL. Au moins, je n'ai pas été capable de le démontrer. Si quelqu'un sait comment garder les variables privées et publiques dans la mémoire active dans une DLL, s'il vous plaît dites-moi comment. À mon avis, la documentation ne le démontre pas. – DavidAS

+0

@ M.S.B Merci - c'est ainsi que je me souviens de Fortan 7/IV en général, sauf que généralement nous avons utilisé COMMON/DATAPOOL /. @David mon expérience et ma compréhension de DLL m'amène à croire que la seule façon de décider ceci est de produire un petit exemple de DLL et de le poster avec les sources afin que je puisse regarder le démontage. –