./ 和 ../和 / 的详细解释和使用方法(小白理解)

部署运行你感兴趣的模型镜像

直接看例子

文件夹路径如图:

 

 那么如果想要在sim_processor.py里面读到data里面的数据怎么办?

第一种方法:使用/

写绝对路径

s1_f1 = 'G:/1PROJRCT/data/S1B_EW_GRDM_1SDH_20180112T073517_20180112T073617_009135_01058B_90A5.zip'

 第二种方法,从当前所在路径“追根溯源”,使用../

../的意思是

现在这个py文件在的文件夹 的 上一个文件夹

现在这个py文件在的文件夹 的 上一个文件夹

现在这个py文件在的文件夹 的 上一个文件夹

重要的话多读几次就懂了哈哈哈

那么如果想要在里面读到data里面的数据,你只需要追根溯源到data的上一个文件夹1PROJECT就可以了。

s1_f1 = '../../data/S1B_EW_GRDM_1SDH_20180112T073517_20180112T073617_009135_01058B_90A5.zip'

 从最上面的文件夹路径图可以看到,sim_processor.py所在文件夹(sample)的上一个文件夹是SealceMotion,所以第一个../帮我们到达了SealceMotion。

而SealceMotion所在文件夹(code)的上一个文件夹是1PROJECT,所以所以第二个../帮我们到达了1PROJECT。

因此两个../就完成了追根溯源。

 

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>好的,我现在需要解决用户的两个问题:一是了解Windows中.lib.dll文件的区别,二是解决之前出现的G:\QTpro\Camare\LIB*.lib: Invalid argument错误。用户还提到参考了站内的两个引用,但根据历史对话,这些引用可能不直接相关,所以重点应放在用户上一次的问题我的回答上。 首先,关于.lib.dll的区别。用户可能是在开发QT项目时遇到链接错误,需要理解这两种库文件的不同,以便正确配置项目。需要从静态库动态库的基本概念入手,解释它们在编译运行时的不同作用,以及如何在QT中使用它们。需要确保语言简洁明了,避免技术术语过于复杂,但又要准确。 其次,解决Invalid argument错误。用户之前的问题中已经提到路径拼写错误通配符的问题,所以需要再次强调这些点。可能用户已经尝试过修正路径,但仍有问题,或者需要更详细的步骤。要检查路径是否正确,是否使用了绝对路径或相对路径,通配符是否被正确替换为具体的库文件名。此外,可能还需要涉及库文件的架构(x86/x64)是否匹配,以及动态库的部署问题。 需要结合之前的回答,确保解决方案一致。比如,之前提到使用明确的库文件名而不是通配符,修正路径中的拼写错误(Camare→Camera),检查库文件架构,动态库的部署位置等。现在需要将这些点整理清楚,分步骤说明,可能还需要添加一些验证步骤,比如如何检查库文件是否存在,如何确认编译器架构等。 另外,用户可能对.lib.dll在QT项目中的具体应用场景不太清楚,需要举例说明,比如在.pro文件中如何引用.lib,运行时如何确保.dll在正确的位置。同时,需要强调两者必须配合使用,特别是海康SDK这类第三方库,通常需要同时处理.lib(链接时).dll(运行时)。 还要注意用户可能遇到的权限问题,比如文件访问被拒绝,这时候需要检查文件夹权限,确保QT有权限读取这些库文件。另外,构建缓存可能导致问题,需要清理旧的构建目录,重新生成项目。 总结起来,回答需要结构清晰,分两部分:第一部分解释.lib.dll的区别,第二部分详细解决Invalid argument错误,结合之前的建议,并补充可能的遗漏点,比如环境变量、路径格式(使用正斜杠)、相对路径的使用等。同时,确保引用之前的建议,如使用dumpbin检查库架构,windeployqt部署依赖等,以增强可信度。</think>#### 一、.lib 与 .dll 文件的本质区别(Windows) | **类型** | **静态库(.lib)** | **动态库(.dll)** | |--------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------| | **编译行为** | 代码在**编译时**直接嵌入到可执行文件中 | 代码在**运行时**动态加载,通过函数地址表(IAT)链接 | | **文件作用** | 包含函数/类的**完整二进制实现**,如海康SDK的`HCNetSDKCom.lib` | 仅包含**导出符号表**重定位信息,实际代码在运行时从`HCNetSDKCom.dll`加载[^1] | | **部署依赖** | 只需在开发阶段链接,发布时无需携带`.lib`文件 | 必须将`.dll`文件与可执行文件(`.exe`)放在同一目录或系统`PATH`路径中 | | **修改影响** | 修改静态库需重新编译整个项目 | 修改动态库只需替换`.dll`文件(需保持接口兼容性) | | **内存占用** | 多次调用相同库函数会导致内存冗余 | 所有进程共享同一份物理内存中的代码段 | --- #### 二、`G:\QTpro\Camare\LIB*.lib: Invalid argument`错误深度修复 ##### 1. **路径与通配符问题(首要矛盾)** - **路径拼写修正** ```qmake # 错误路径:Camare(拼写错误) + 通配符* LIBS += "G:/QTpro/Camare/LIB/*.lib" # 修正为: LIBS += "G:/QTpro/Camera/LIB/HCNetSDKCom.lib" # 明确列出每个库 LIBS += "G:/QTpro/Camera/LIB/HCAlarm.lib" ``` - **验证方法**:在文件资源管理器中确认路径`G:\QTpro\Camera\LIB\`存在且包含`.lib`文件[^2] - **使用`$$PWD`相对路径**(避免绝对路径硬编码) ```qmake # 将库文件放在项目根目录的lib子文件夹中 LIBS += -L$$PWD/lib -lHCNetSDKCom -lHCAlarm ``` ##### 2. **库文件架构验证** - **检查`.lib`文件的目标平台**(x86/x64必须与Qt项目一致) ```powershell # 使用Visual Studio工具链检查 dumpbin /HEADERS HCNetSDKCom.lib | findstr "machine" ``` - **期望输出**: - x64库 → `8664 machine (x64)` - x86库 → `14C machine (x86)` - **Qt Creator编译器配置**: 菜单栏 → `Projects` → `Build & Run` → 确保`Kit`的`Device type`与库架构匹配。 ##### 3. **动态库(.dll)运行时部署** - **手动复制**:将以下文件放入生成目录(如`build-projectname-Release/release`): ```plaintext G:\QTpro\Camera\LIB\HCNetSDKCom.dll G:\QTpro\Camera\LIB\HCCore.dll ``` - **自动化部署**(推荐):在`.pro`中添加: ```qmake # 编译后自动复制dll到输出目录 win32 { QMAKE_POST_LINK += $$escape_expand(\n) copy /Y $$quote($$PWD/lib/*.dll) $$quote($$OUT_PWD) } ``` ##### 4. **环境清理与权限修复** - **强制清理构建缓存**: 删除以下目录: ```plaintext G:\QTpro\build-projectname-* # 所有历史构建目录 %LOCALAPPDATA%\QtProject # Qt Creator缓存 ``` - **文件权限修复**: 右键`G:\QTpro\Camera` → `属性` → `安全` → 为当前用户添加`完全控制`权限。 --- #### 三、关键错误对照表 | **错误现象** | **根本原因** | **解决方案** | |------------------------------|---------------------------------------|------------------------------------------------------------------------------| | `Invalid argument` | 路径拼写错误或通配符`*` | 修正`Camare`为`Camera`,明确指定每个`.lib`文件名 | | `LNK1181: cannot open input` | 路径包含空格或特殊字符 | 使用短路径(如`G:/QTpro/Camera`代替`G:/QTpro/Camare`),避免中文或空格 | | 运行时黑屏/无响应 | `.dll`未正确部署或版本不匹配 | 用`depends.exe`检查`.dll`依赖链,确保所有动态库存在于`exe`同级目录 | --- #### 相关问题 1. **如何在Qt项目中同时使用静态库动态库?** **答**:在`.pro`中链接静态库(`.lib`),运行时部署动态库(`.dll`)。示例: ```qmake LIBS += -L$$PWD/lib -lHCNetSDKCom # 静态库链接 QMAKE_POST_LINK += copy $$PWD/bin/HCNetSDKCom.dll $$OUT_PWD # 动态库部署 ``` 2. **为何修正路径后仍提示“找不到符号”?** **答**:使用`dumpbin /SYMBOLS HCNetSDKCom.lib | findstr "函数名"`验证库是否包含目标函数。 3. **如何避免中文路径导致的兼容性问题?** **答**:将SDK迁移到纯英文路径(如`D:\SDK\Hikvision`),并在`.pro`中使用短路径语法(`D:/SDK/Hikvision`)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值