2012-10-31 76 views
1

如何啓用靜態庫來提取ascii數據文件中可用的數據?從靜態庫函數訪問文本數據文件

我試圖添加一個模型作爲一個庫,其中包含從數據文件中讀取數據的函數。我能夠在實際完全模擬之外編譯和運行主程序中的函數,但是一旦我將函數作爲模擬庫的主機上的數據不再被讀取。

由於數據路徑根據用戶而不同,因此無法爲ASCII數據文件提供絕對數據路徑。有沒有辦法使用objcopy將數據文件轉換爲庫中的對象代碼,或者如何最好地訪問靜態庫中的數據?

回答

3

有幾種解決方案可以在編譯時打開一個未知位置的文件。提示用戶輸入文件的名稱,包括目錄。使用環境變量指定包含該文件的目錄... Fortran 2003具有獲取環境變量值的內在屬性。從命令行參數中獲取信息... Fortran 2003也具有此用途。通過所有這些,將文件名構建爲字符串變量並將該變量提供給OPEN語句的FILE關鍵字。

+0

爲了在使用f2c將fortran代碼轉換爲c時使用getcwd_和lnblnk_,需要鏈接哪個庫? –

+0

調用getcwd(),而不是getcwd_() –

0

如果你有這樣一個函數說:

void read_data_from_files() { ... } 

你需要改變它的DLL更喜歡:

DataObject read_data_from_file(const char* file_path) { ... } 

然後適當地調用它。您需要設計DataObject

1

我不知道爲什麼你inclouded的Fortran語言的標籤,但在Fortran語言你:

告訴代碼打開要使用字符串的文件

從中

閱讀並關閉它

主程序或庫沒有區別。