【问题标题】:How to build an standalone shared library in C++ using qmake?如何使用 qmake 在 C++ 中构建独立的共享库?
【发布时间】:2023-03-08 19:55:01
【问题描述】:

我使用 qt creator 和 QMake 在 C++ 中编写了一个共享库

当我使用 MinGW 编译器编译我的项目时,我需要将库 libgcc_s_dw2-1.dlllibstdc++-6.dlllibwinpthread-1.dll 复制到我的 DLL 旁边以便工作。大小约为 1.5 兆字节。

当我使用 MSVC 2015 编译器编译我的项目时,我需要在部署系统上安装 Visual C++ Redistributable 2015 x86。大小约为 13 兆字节。

我的项目大小不到 100 KB,因此这些依赖关系非常大。

如何将它们嵌入到我的库中?或者如何在 Windows 7 或更高版本的项目旁边安装或复制更少的依赖项?

PS 1:我看过this,但是MinGW方法和以前一样。我在 Microsoft Tools 方法中遇到了错误。

PS 2:也许 .Net Framework 2.0 是更好的选择,因为它预装在 Windows 7 上,我们可以强制 .Net 4.5 在 Windows 8/8.1/10 中运行它。你不知道吗?

【问题讨论】:

    标签: c++ visual-c++ dll mingw qmake


    【解决方案1】:

    只需静态链接标准库。您的 DLL 大小会明显增加(我希望这不是问题),但不会增加太多(

    这样做:

    如果你使用 MSVC 添加 /MT 到命令行(你也可以在项目属性窗口中找到它)。

    如果你使用 g++ 添加 '--static' 。

    【讨论】:

    • /MT 成功了,我之前尝试过,但我不知道为什么现在有效。该项目是 30 KB,现在是 99 KB
    • 99KB!祝你好运朋友。如果您静态使用的其他一些库不是使用该标志构建的,有时 /MT 将无法工作。它发生了。不用担心,但您必须使用该标志重新构建它们!
    【解决方案2】:

    我认为你不能这样做,你的项目必须设置在静态或动态链接上,而不是两者一起。

    【讨论】:

    • 你的意思是没有办法建立一个单独的库并把它交给别人?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    相关资源
    最近更新 更多