小编Gal*_*har的帖子

在Windows 8上解压缩存档

我以前使用MiniZip(zlib包装器)来解压缩档案.MiniZip不能用于Metro应用程序,因为它在"iowin32.c"中使用了弃用的API - CreateFile()和SetFilePointer().

我认为这将是一个简单的修复,并创建"iowinrt.c"与CreateFile()和SetFilePointer()替换为CreateFile2()和SetFilePointerEx().虽然这样我获得了一个只使用经过批准的Win8 API的MiniZip版本,但它仍然没用 - 我忘记了沙盒.如果我使用FileOpenPicker()选择一个文件并将其路径传递给我修改过的MiniZip,我仍然无法打开它 - CreateFile2()将因"访问被拒绝"而失败.信息.

所以看起来旧的C API用于文件访问,如果现在几乎无用; 我的理解是,为了解决这个问题,我需要使用新的异步文件访问在C++/CX中重新实现我的"iowinrt".还有其他选择吗?我想我在某处看到WinRT确实具有压缩/解压缩功能,但它只适用于单个文件,而不适用于存档.

我需要它在内存中工作的附加要求.

有一会儿,我以为我有一个通过.NET Framework 4.5的解决方案:

  1. 我发现了这条关于如何创建可以在C++/CX中使用的.NET类的信息:http: //social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/3ff383d0-0c9f-4a30- 8987-ff2b23957f01

  2. .NET Framework 4.5在System.IO.Compression中包含ZipArchive和ZipArchiveEntry类:http: //msdn.microsoft.com/en-us/library/system.io.compression.ziparchive%28v=vs.110%29.aspx# Y0 http://msdn.microsoft.com/en-us/library/system.io.compression.ziparchiveentry%28v=vs.110%29.aspx#Y0

我以为我可以使用WinMD输出类型创建C#Metro类库,公开ZipArchive和ZipArchiveEntry,然后在我的C++/CX项目中使用它.但是,即使它起作用,也不会在内存中起作用; ZipArchive和ZipArchiveEntry似乎只适用于文件.

zip zlib microsoft-metro c++-cx

8
推荐指数
1
解决办法
3035
查看次数

在Mac上构建完成后,获取qmake来执行shell脚本

我的发布版本完成后,我想运行一个脚本.

我发现这个问题如何在QT中从.pro完成编译后执行shell命令?但答案对我不起作用.我尝试在我的.pro文件中添加对此的各种修改:

CONFIG(release, debug|release) {
    mytarget.target = ./MyScript.sh
    mytarget.commands = touch $$mytarget.target

    QMAKE_EXTRA_TARGETS +=mytarget
    QMAKE_POST_LINK += mytarget
}
Run Code Online (Sandbox Code Playgroud)

但这总是会产生":-1:错误:mytarget:没有这样的文件或目录".路径是正确的,'MyScript.sh'在命令行中运行正常.

由于这适用于其他人,我想我做错了.我在Mac上使用Qt 4.7.2.

qt qmake post-build-event

6
推荐指数
1
解决办法
6631
查看次数

标签 统计

c++-cx ×1

microsoft-metro ×1

post-build-event ×1

qmake ×1

qt ×1

zip ×1

zlib ×1