【问题标题】:Compile DLL written in C99 that works out of the box on most versions of Windows编译用 C99 编写的 DLL,在大多数版本的 Windows 上开箱即用
【发布时间】:2016-05-24 09:26:49
【问题描述】:

我使用 C99 编写了一个简单的共享库,我想将它移植到 Windows。我的目标是提供一个已编译的 DLL,以便它可以用于使用各种旧版本 Visual Studio(以及通过 p/invoke 的 C#)构建的应用程序。

我已经设法使用 Visual Studio 2015 社区将其编译为 DLL。

但是,我得到反馈,它只能在我的机器上运行,而不能在其他机器上加载,因为它依赖于 VCRUNTIME140.DLL,它不是 Windows 的一部分。

根据我的发现,官方解决方案是告诉用户访问 microsoft.com,下载并运行 VS 可再发行包的安装程序。对我来说,这听起来像是一个非常糟糕的用户体验。这真的是解决方案吗?

我如何构建一个 DLL:

  • 使用 C99,
  • 与 Windows 7 及更高版本兼容(开箱即用,无需额外安装程序),
  • 并且可以由使用 Visual Studio 2008 及更高版本构建的应用程序加载?

【问题讨论】:

    标签: c dll visual-studio-2015 runtime c99


    【解决方案1】:

    可以由使用 Visual Studio 2008 及更高版本构建的应用程序加载吗?

    这是答案的关键。您必须使用 Visual Studio 2008 进行编译。

    用旧工具编译的二进制文件可以被新工具使用,但它不能向后工作。

    【讨论】:

    • 这并不能回答我的问题,因为VS2008无法编译C99。
    • 啊,对不起。这使您的问题更加复杂。您可能很幸运尝试静态链接到 vcruntime,这样您就不需要分发第二个二进制文件。 msdn.microsoft.com/en-us/library/abx4dbyh.aspx 或者,您可以查看其他 C 编译器,例如 Pelles C。
    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2011-02-06
    • 2014-07-27
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多