【问题标题】:Dll with MFC and static linking [duplicate]带有 MFC 和静态链接的 Dll [重复]
【发布时间】:2014-01-14 00:07:40
【问题描述】:

我有使用 MFC 的 dll,我需要它在另一台计算机上工作而无需额外安装。

如果“C/C++ -> 代码生成 -> 运行时库”是多线程 DLL (/MD) 并且“常规 -> 使用 MFC”设置为在共享 DLL 中使用 MFC - 我的 dll 需要 msvcr80。 dll。

如果“常规 -> 使用 MFC”设置为在静态库中使用 MFC,并且“C/C++ -> 代码生成 -> 运行时库”设置为多线程 (/MT) - 我有一个错误 #error Please use the /MD switch for _AFXDLL builds

有什么解决办法吗?我会很感激任何帮助。我正在寻找答案很长时间,并且在很多地方都说第二个变体应该可以正常工作。

【问题讨论】:

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


    【解决方案1】:

    您应该以与库相同的模式构建您的客户端您的链接。 图书管理员会警告你。因此,要解决错误 - 构建使用带有 /MD 标志 而不是 /MT

    的 MFC 库的客户端

    【讨论】:

    • 而且msvcr80.dll无论如何都要另外安装在另一台电脑上,对吗?
    • 取决于链接类型:如果它是静态的 - 当 dll 中不需要时,否则(动态) - 应该为您的应用程序提供这样的 dll。
    • 在我的情况下静态是不可能的?
    • 选择将 MFC 用作静态链接库的选项。
    • 我在我的问题中写道:“如果“常规 -> 使用 MFC”设置为在静态库中使用 MFC,并且“C/C++ -> 代码生成 -> 运行时库”设置为多线程 (/MT) - 我有一个错误 #error 请使用 /MD 开关进行 _AFXDLL 构建"
    【解决方案2】:

    MFC 扩展 DLL 必须与 MFC 的 DLL 版本链接。只有 MFC 应用可以静态链接到 MFC 框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-14
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      相关资源
      最近更新 更多