我在 VS2008 中编写了一个我在 C# 应用程序中使用的 dll,但我的用户不喜欢他们同时需要 .NET 框架和 VC++ 运行时这一事实。
有没有办法可以避免我的 C++ dll 中的“必备”VC++ 运行时?
您可以使用静态链接的运行时构建您的 dll(/MT 而不是 /MD - 在属性->配置属性->C/C++->代码生成->运行时库下)。
您可以将静态运行时库链接到您的 dll 中。这样,它将始终存在,并且不需要带有 C++ 运行时的 .dll。
就像其他人说的那样,您可以静态链接,但是如果您合并了非静态链接的第 3 方 C++ dll(几乎是所有内容),那将成为一场噩梦。这种情况会导致随机崩溃,这将需要您永远进行调试。最简单的方法是使用一个安装程序,它对您的用户隐藏它。如果您使用 vs 安装程序,则可以使用合并模块,或者作为 nsis 安装的一部分进行安装。这将使每个人的生活更轻松。尤其是你的。没有理由反对安装这些,就像反对安装 .NET 框架一样。除非您需要它们并且没有它们,否则在稳定性方面没有区别。