2012-10-31 8 views
1

정적 라이브러리를 사용하여 ASCII 데이터 파일에서 사용할 수있는 데이터를 가져 오려면 어떻게해야합니까?정적 라이브러리 함수에서 텍스트 데이터 파일에 액세스

데이터 파일에서 데이터를 읽는 함수가 들어있는 라이브러리로 시뮬레이션에 모델을 추가하려고합니다. 실제 전체 시뮬레이션 외부에서 주 프로그램의 기능을 컴파일하고 실행할 수 있지만 일단 시뮬레이션을 위해 호스트에 라이브러리로 함수를 추가하면 데이터가 더 이상 읽히지 않습니다.

데이터 경로가 사용자에 따라 달라 지므로 ascii 데이터 파일에 절대 데이터 경로를 제공 할 수 없습니다. objcopy를 사용하여 데이터 파일을 라이브러리의 객체 코드로 만들거나 정적 라이브러리에서 데이터에 가장 잘 액세스하려면 어떻게해야합니까? 당신이있는 경우

답변

3

컴파일 타임에 알 수없는 위치의 파일을 여는 여러 가지 방법이 있습니다. 사용자에게 디렉토리를 포함하여 파일 이름을 묻습니다. 환경 변수를 사용하여 파일을 포함하는 디렉토리를 지정하십시오 ... Fortran 2003은 환경 변수의 값을 얻는 본질을 가지고 있습니다. 명령 행 인수에서 정보를 얻으십시오 ... 다시 Fortran 2003에는이 목적을위한 내장 함수가 있습니다. 이들 모두를 사용하여 파일 이름을 문자열 변수로 구성하고 해당 변수를 OPEN 문의 FILE 키워드에 제공하십시오.

+0

f2c를 사용하여 포트란 코드를 c로 변환 할 때 getcwd_ 및 lnblnk_를 사용하려면 어떤 라이브러리에 링크해야합니까? –

+0

getcwd_()가 아닌 getcwd()를 호출하십시오. –

0

는 같은 함수 말 :

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

그리고 적절하게 전화 :

void read_data_from_files() { ... } 

당신은 더처럼 할 DLL을 변경해야합니다.

DataObject을 디자인해야합니다. 당신은 포트란 태그를 inclouded 이유

1

는 모르겠지만, 포트란에서 당신은 :

그것에서 읽는 당신이 문자열을 사용하여 원하는 파일을 열 때 코드를 알려 닫으려면

주 프로그램이나 라이브러리간에 차이점은 없습니다.