如何启用静态库以提取ascii数据文件中的数据?
我正在尝试将模型添加到模拟中,作为包含从数据文件中读取数据的函数的库。我能够在实际的完整模拟之外从主程序编译和运行函数,但是一旦我将函数作为库放在主机上进行模拟,数据就不再被读取了。
由于数据路径因用户而异,我无法提供ascii数据文件的绝对数据路径。有没有办法使用objcopy将数据文件转换为库中的目标代码,或者如何从静态库中最佳地访问数据?
答案 0 :(得分:3)
有几种解决方案可以在编译时打开一个位置未知的文件。提示用户输入文件名,包括目录。使用环境变量来指定包含该文件的目录... Fortran 2003具有获取环境变量值的内在函数。从命令行参数中获取信息...再次Fortran 2003具有此功能的内在功能。使用所有这些,将文件名构造为字符串变量,并将该变量提供给OPEN语句的FILE关键字。
答案 1 :(得分:1)
我不知道为什么你包含了Fortran标签,但在Fortran中你:
告诉代码使用字符串
打开您想要的文件从中读取
并关闭它
主程序或库之间没有区别。
答案 2 :(得分:0)
如果您有类似的功能,请说:
void read_data_from_files() { ... }
您需要在DLL中将其更改为更像:
DataObject read_data_from_file(const char* file_path) { ... }
然后适当地调用它。
您需要设计DataObject
。