rust-dev 发表于 2022-10-12 21:11
问题描述:
有一个依赖库用于读取文件然后进行一些处理操作,这个文件放置在依赖库下某个位置,采用File::open(path)进行读取,比如path是一个相对路径。
当另外一个库去调用这个依赖库时,path不是想象中相对依赖库的路径,而是相对当前程序运行的路径,从而导致依赖库读取文件失败。
请问依赖库的文件路径该怎么处理?
linux 用 dladdr
windows 用 GetModuleFileName
BTW: so/dll 就是一些函数的集合,没有此类环境信息
感谢🙏!这个方法很有用!
-- 👇 苦瓜小仔: 使用 file!(),它给出调用这个宏所在的文件路径。在依赖项之外给出绝对路径,在依赖项所在目录给出相对路径。
file!()
Edit: canonicalize 依然按照运行路径填充成绝对路径,所以无济于事。
使用 file!(),它给出调用这个宏所在的文件路径。在依赖项之外给出绝对路径,在依赖项所在目录给出相对路径。
评论区
写评论linux 用 dladdr
windows 用 GetModuleFileName
BTW: so/dll 就是一些函数的集合,没有此类环境信息
感谢🙏!这个方法很有用!
--
👇
苦瓜小仔: 使用
file!()
,它给出调用这个宏所在的文件路径。在依赖项之外给出绝对路径,在依赖项所在目录给出相对路径。Edit: canonicalize 依然按照运行路径填充成绝对路径,所以无济于事。
使用
file!()
,它给出调用这个宏所在的文件路径。在依赖项之外给出绝对路径,在依赖项所在目录给出相对路径。Edit: canonicalize 依然按照运行路径填充成绝对路径,所以无济于事。