< 返回版块

rust-dev 发表于 2022-10-12 21:11

问题描述:

有一个依赖库用于读取文件然后进行一些处理操作,这个文件放置在依赖库下某个位置,采用File::open(path)进行读取,比如path是一个相对路径。

当另外一个库去调用这个依赖库时,path不是想象中相对依赖库的路径,而是相对当前程序运行的路径,从而导致依赖库读取文件失败。

请问依赖库的文件路径该怎么处理?

评论区

写评论
elsejj 2022-10-26 14:13

linux 用 dladdr

windows 用 GetModuleFileName

BTW: so/dll 就是一些函数的集合,没有此类环境信息

作者 rust-dev 2022-10-13 11:40

感谢🙏!这个方法很有用!

--
👇
苦瓜小仔: 使用 file!(),它给出调用这个宏所在的文件路径。在依赖项之外给出绝对路径,在依赖项所在目录给出相对路径。

Edit: canonicalize 依然按照运行路径填充成绝对路径,所以无济于事。

苦瓜小仔 2022-10-12 23:32

使用 file!(),它给出调用这个宏所在的文件路径。在依赖项之外给出绝对路径,在依赖项所在目录给出相对路径。

Edit: canonicalize 依然按照运行路径填充成绝对路径,所以无济于事。

1 共 3 条评论, 1 页