2011-04-18 115 views
3

我對Fortran 95的一個非常可怕的錯誤:的Fortran模塊版本致命錯誤

Fatal Error: While reading module 'list5.mod' found module version 0, expected 6 

我已經包括了我的模塊的主要結構。我非常懷疑它與我的模塊內的物質有什麼關係,因爲它給了我錯誤信息,並且我已經能夠修復它們,這意味着它能夠通過我的模塊,它只是一些與我使用模塊的方式。也許?

MODULE list5 
    IMPLICIT NONE 

    CONTAINS 

---- 

END MODULE 

主要方案的結構是這樣的:

PROGRAM mainlist 
    USE list5 
IMPLICIT NONE 

    !Variable Declaration 
    INTEGER:: opt 
    INTEGER, PARAMETER:: maxitems=50 
    INTEGER:: size=0 
    CHARACTER(20):: itemarray(50) 
    INTEGER:: quantityarray(50) 
    INTEGER:: totalquantity, i=0 
    REAL:: totalprice=0, pricearray(50)=0 

    CHARACTER(20), DIMENSION(:)::Item 
    CHARACTER(20):: ItemSought 
    LOGICAL:: Found 
    INTEGER:: Location 

    INTEGER:: NumItems=0, SmallestItem=0 

!Select statement for the menu 

DO 
opt=choices() 
SELECT CASE (opt) 
    CASE(1) 
     size=size+1 
     CALL getItemData(itemarray,pricearray,quantityarray) 
    CASE(2) 
     CALL getFileItems(size,itemarray,pricearray,quantityarray) 
    CASE(3) 
     CALL pickItemRandomly (size) 
    CASE(4) 
     CALL calcListTotals 
(pricearray,quantityarray,totalprice,totalquantity) 
     CALL printList(size,itemarray,pricearray,quantityarray,totalprice, totalquantity) 
    CASE(5) 
     CALL sortByItem(itemarray, pricearray, quantityarray) 
    CASE(6) 
     CALL sortByPrice(itemarray, pricearray, quantityarray) 
    CASE(7) 
     CALL writeListtoFile(size,itemarray, pricearray, quantityarray) 

    CASE(8) 
     CALL search(itemarray, ItemSought, Found, Location) 
    CASE(9) 
     STOP 
END SELECT 
END DO 



END PROGRAM 

在所有任何建議?我真的需要解決這個問題,所以任何幫助將不勝感激。非常感謝!!

+3

我無法從給定的數據,自然繁殖,但是從我GOOGLE了,好像(順便說一句,你使用的是什麼編譯器,G95?)當使用不同版本的編譯器的出現這個錯誤。一些鏈接可能有一些相關性。 http://forum.wrfforum.com/viewtopic.php?f=20&t=1205 http://www.docstoc.com/docs/37887247/Athena-Knowledge-Base – Rook 2011-04-18 01:25:54

+0

可能必須通過在文檔向下滾動了一下第二個。 – Rook 2011-04-18 01:27:11

+0

@Rook是的,我用G95 – EuropaDust 2011-04-18 01:34:00

回答

6

由於魯克說,這個問題是編譯器版本;不知何故,第一次編譯list5的.mod文件是由一個較老的編譯器生成的。清除所有.o和.mod文件,然後重試,首先編譯list5.f90(或者包含模塊list5的文件),然後編譯主程序。

+0

當我單獨編譯模塊時,錯誤信息消失。但是如果與模塊分開編譯,程序是否仍然可以運行?即:當我準備好正常運行程序時,錯誤消息是否會再次出現?謝謝! – EuropaDust 2011-04-18 03:15:31

+0

所以我想繼續爲你建議,但並初步錯誤走了,正如我在以前的評論說,單獨編制,但現在我有,我從來沒有在我的生活中看到一個完全奇怪的錯誤。這也是一個很長的錯誤信息。 – EuropaDust 2011-04-18 03:42:00

+4

是的,模塊和程序不需要同時編譯。它們必須按照適當的順序和相同的編譯器進行編譯。因此,如果程序或程序使用模塊,則需要先編譯模塊。循環依賴不允許!您可以分別單獨編譯或使用一個編譯命令進行編譯,但無論在哪種情況下,文件的順序都很重要。如果你向我們展示你的新錯誤,也許我們可以幫助.... – 2011-04-18 04:10:58