taurusxin / ncmdump

转换网易云音乐 ncm 到 mp3 / flac. Convert Netease Cloud Music ncm files to mp3/flac files.
MIT License
1.04k stars 168 forks source link

refactor:封装加解密逻辑为独立库 #10

Closed s12mmm3 closed 8 months ago

s12mmm3 commented 8 months ago

taglib和核心库是否静态编译由变量BUILD_SHARED_LIBS控制,默认为静态链接

s12mmm3 commented 8 months ago

现在貌似传入特殊字符会有崩溃问题,可能是多字节转换失败的原因 フレン・E・ルスタリオ - フラクタル.ncm image

taurusxin commented 8 months ago

封装成库反而多此一举了,一个小工具而已没那个必要

taurusxin commented 8 months ago

封装成库反而多此一举了,一个小工具而已没那个必要

还有就是,PR中的提交请压成一个提交,不要这么一大片

taurusxin commented 8 months ago

现在貌似传入特殊字符会有崩溃问题,可能是多字节转换失败的原因 フレン・E・ルスタリオ - フラクタル.ncm image

这个问题在 Windows 上已经修复了,没有问题。(#3)

s12mmm3 commented 8 months ago

封装成库反而多此一举了,一个小工具而已没那个必要

咱这边想调用一下这段逻辑😂所以封了一下

s12mmm3 commented 8 months ago

封装成库反而多此一举了,一个小工具而已没那个必要

还有就是,PR中的提交请压成一个提交,不要这么一大片

好的,下次注意

s12mmm3 commented 8 months ago

现在貌似传入特殊字符会有崩溃问题,可能是多字节转换失败的原因 フレン・E・ルスタリオ - フラクタル.ncm image

这个问题在 Windows 上已经修复了,没有问题。(#3)

😂我这边还是有问题

taurusxin commented 8 months ago

现在貌似传入特殊字符会有崩溃问题,可能是多字节转换失败的原因 フレン・E・ルスタリオ - フラクタル.ncm image

这个问题在 Windows 上已经修复了,没有问题。(#3)

😂我这边还是有问题

具体是怎么复现的?我这里用最新的Release没问题呀,方法是直接拖拽。

s12mmm3 commented 8 months ago

现在貌似传入特殊字符会有崩溃问题,可能是多字节转换失败的原因 フレン・E・ルスタリオ - フラクタル.ncm image

这个问题在 Windows 上已经修复了,没有问题。(#3)

😂我这边还是有问题

具体是怎么复现的?我这里用最新的Release没问题呀,方法是直接拖拽。

我这边是通过命令行输入的,软件就直接崩掉了 image 调试了一下发现是崩在fs::path path(multiByteStr);

taurusxin commented 8 months ago
PixPin_2024-02-11_11-19-40

powershell下没有复现,你重新用CMake编译试试看

s12mmm3 commented 8 months ago

PixPin_2024-02-11_11-19-40 powershell下没有复现,你重新用CMake编译试试看

我这边用MSVC2019和MinGW13.1都会崩掉,奇怪了 image

taurusxin commented 8 months ago

PixPin_2024-02-11_11-19-40 powershell下没有复现,你重新用CMake编译试试看

我这边用MSVC2019和MinGW13.1都会崩掉,奇怪了 image

好像是用了CMake后才会出现的问题。我刚刚测试没问题的是之前用Makefile构建的,CMake版本就崩溃了

s12mmm3 commented 8 months ago

PixPin_2024-02-11_11-19-40 powershell下没有复现,你重新用CMake编译试试看

我这边用MSVC2019和MinGW13.1都会崩掉,奇怪了 image

好像是用了CMake后才会出现的问题。我刚刚测试没问题的是之前用Makefile构建的,CMake版本就崩溃了

应该不是CMake的问题,感觉有些局部变量指针和字节转换的问题,我查下吧

taurusxin commented 8 months ago

修好了。之前你改main.cpp时候加了个 && define(_MSCVER),在MinGW下编译就默认是 main方法而不是wmain,从而导致宽字符根本就没有转换。

taurusxin commented 8 months ago

修好了。之前你改main.cpp时候加了个 && define(_MSCVER),在MinGW下编译就默认是 main方法而不是wmain,从而导致宽字符根本就没有转换。

然后在 MinGW编译还需要加一个链接参数 -municode 才能识别 wmain方法

s12mmm3 commented 8 months ago

修好了。之前你改main.cpp时候加了个 && define(_MSCVER),在MinGW下编译就默认是 main方法而不是wmain,从而导致宽字符根本就没有转换。

然后在 MinGW编译还需要加一个链接参数 -municode 才能识别 wmain方法

确实,mingw加了参数以后就正常了;但是msvc还是会崩溃😂我查一下

taurusxin commented 8 months ago

修好了。之前你改main.cpp时候加了个 && define(_MSCVER),在MinGW下编译就默认是 main方法而不是wmain,从而导致宽字符根本就没有转换。

然后在 MinGW编译还需要加一个链接参数 -municode 才能识别 wmain方法

确实,mingw加了参数以后就正常了;但是msvc还是会崩溃😂我查一下

我也在修 msvc 的崩溃的问题,看了下如果是中文系统的话下输入的字符串被当成 GBK 处理了,你有结果了反馈一下

s12mmm3 commented 8 months ago

在我的bugfix分支里改了下,主要是 main里的fs::path path(multiByteStr) 和 最后提示处理成功的地方 会导致崩溃;其他的引用可能导致崩溃也稍微改了一下; 文件可以正常处理了,不过最后的提示语输出还是有问题,暂时没想到怎么改 image

taurusxin commented 8 months ago

暂时先关闭了,有时间修一修这个bug

taurusxin commented 8 months ago

non-ASCII file name on Windows fatal has been fixed: https://github.com/taurusxin/ncmdump/commit/5cfe439e488912266dd7fb787c2dd18d19b57020