1

スタティック ライブラリが ASCII データ ファイルで利用可能なデータを取得できるようにするにはどうすればよいですか?

データ ファイルからデータを読み取る関数を含むライブラリとしてモデルをシミュレーションに追加しようとしています。実際のフル シミュレーションの外部でメイン プログラムから関数をコンパイルして実行することはできますが、関数をシミュレーション用のホストにライブラリとして配置すると、データが読み取られなくなります。

データへのパスはユーザーによって変わるため、ASCII データ ファイルへの絶対データ パスを提供することはできません。objcopy を使用してデータ ファイルをライブラリ内のオブジェクト コードにする方法はありますか、またはスタティック ライブラリからデータに最適にアクセスするにはどうすればよいですか?

4

3 に答える 3

3

コンパイル時に場所が不明なファイルを開くには、いくつかの解決策があります。ディレクトリを含むファイルの名前をユーザーに要求します。環境変数を使用して、ファイルを含むディレクトリを指定します... Fortran 2003 には、環境変数の値を取得する組み込み関数があります。コマンド ライン引数から情報を取得します ... Fortran 2003 には、この目的のための組み込み関数があります。これらすべてを使用して、ファイル名を文字列変数として作成し、その変数を OPEN ステートメントの FILE キーワードに指定します。

于 2012-10-31T22:24:42.707 に答える
1

Fortranタグをクラウド化した理由はわかりませんが、Fortranでは次のようになります。

文字列を使用して、必要なファイルを開くようにコードに指示します

そこから読み取る

そしてそれを閉じるために

メインプログラムとライブラリの間に違いはありません。

于 2012-10-31T22:09:21.573 に答える
0

次のような関数がある場合は、次のように言います。

void read_data_from_files() { ... }

DLL で次のように変更する必要があります。

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

そして、それを適切に呼び出します。

を設計する必要がありますDataObject

于 2012-10-31T20:42:57.393 に答える