2013-04-08 27 views
0

我已经使用Qt库编写了一个可移植的C++应用程序。这意味着我不能使用MT标志进行编译而不会冒内存问题。如何部署一个可移植的C++应用程序?

这给我留下了两个选项:

1)部署与安装便携式应用。

2)将C++依赖关系打包到同一文件夹中或使用私有程序集。

1和2都失败的便携软件的想法,所以我想第三个选项:

3)使用IExpress程序来启动应用程序前下降了C++的依赖。退出时,删除C++依赖项。

不幸的是,选项3已经收到一些stackoverflow成员的一些flak。他们甚至不喜欢选项2,这让我只有选项1.如果使用便携式安装程序,我可以看到选项1是可行的。

有没有像便携式安装程序这样的东西?实质上,我希望安装程序在运行我的应用程序之前检查是否安装了所需的依赖项(就像常规安装程序一样),如果它们是,那么只需继续运行我的应用程序。否则,给用户一个消息框,他们可以下载它提供一个到URL的链接。我知道我可以编写自己的安装程序,可以在C++中执行此操作,但是我想知道是否有已经提供此特定功能的安装程序。

+0

你的问题不是很清楚。我建议添加链接到你提到的stackoverflow问题。我假设你正在谈论Windows部署 - 但是你的目标是什么Windows版本?另外,我怀疑你的“便携”定义与其他人的定义不一样(我猜你的意思是“使用USB存储棒?”)另外,你的标签看起来很糟糕 - 为什么用QT标记,如果不是这样qt具体? – 2013-04-08 23:32:33

+0

也许这个链接会更有帮助吗? http://qt-project.org/faq/answer/why_does_a_statically_built_qt_use_the_dynamic_visual_studio_runtime_librar我无法找到stackoverflow问题了。 :(我的目标是Windows Vista/7/8,我的便携式定义是局限于一个EXE,可以使用USB存储棒。 – user2258753 2013-04-08 23:37:55

+0

'-MT'标志与可移植性无关,除非目标平台不支持线程,在这种情况下,你可能已经假设使用线程,并使用标志,并且你已经被调用了 – 2013-04-09 01:25:21

回答

0

http://qt-project.org/doc/qt-4.8/deployment.html

在Windows中的的Qt DLL这么小,与应用程序部署它们是不是在我看来是一个问题。

没有任何程序在那里,我知道那个地方的Qt DLL在Windows的某个地方,其他程序后来会发现(如C:/ Windows/system32)。

我认为你可以期望重用库的唯一地方就是在Linux或者拥有大量Qt应用的移动设备上。但即使如此,您仍要确保这些库的版本足够高,以支持您使用的所有功能。

希望有所帮助。

+1

这个问题不在Qt的DLL中,问题在于C++的DLL。 Qt库是静态链接到可执行文件的,对不明确的说明,我所指的MT标志是MSVC编译器。 – user2258753 2013-04-08 22:57:17

+0

@ user2258753:如果你的Qt DLL链接了静态,为什么不继续做C++作为静态链接的库也是? – 2013-04-08 23:40:48

+0

@ZanLynx:由于内存问题:http:// qt-project。org/faq/answer/why_does_a_statically_built_qt_use_the_dynamic_visual_studio_runtime_librar和http://qt-project.org/forums/viewthread/16513 – user2258753 2013-04-08 23:43:36

相关问题