【问题标题】:How can I create a single Visual Studio project that mixes C and C++ using CLR?如何使用 CLR 创建混合 C 和 C++ 的单个 Visual Studio 项目?
【发布时间】:2011-12-01 20:40:29
【问题描述】:

我正在使用 Visual Studio 2008 将基于 Unix 上的 GCC 构建的代码移植到 Windows。我想创建一个不依赖于我自己创建的任何 dll 并且仅内置于Windows 操作系统。

我的代码包含 zlib,它本身包含 C 文件,我可以构建这些文件并将其链接到我的 Unix 可执行文件中。

在我开始尝试构建时,我遇到的第一个错误是 zlib 中的 C 代码不能用 CLR 构建,因为它不是 C++。

我看到有人建议将其分解为一个单独的 DLL,该 DLL 将链接到我的可执行文件中,但我想尽可能避免共享库的复杂性。 (或许这种回避更加复杂?)

有没有办法将我的 C++ 与 zlib 的 C 代码混合成一个带有 CLR 的可执行文件?

我当前的构建错误如下:

1>cl : Command line error D8045 : cannot compile C file '..\src\zlib-1.2.5\zutil.c' with the /clr option

【问题讨论】:

标签: c++ c visual-studio-2008 clr porting


【解决方案1】:

您可以将其更改为 cpp 以使其由 C++ 编译器编译(并修复任何引入的编译错误)。这可能比仅使用共享库 (dll) 更困难。

【讨论】:

  • C 代码应该通过 C 编译器。如果您将 .cpp 文件提供给 VC,则不会出现这种情况,它将使用 C++ 编译器。
  • VC 确实提供了一个 C 编译器,它将用于编译 .c 文件。问题是在指定 CLR 选项时这似乎不起作用。有关这方面的详细信息,请参阅我上面的链接。
  • @alk 我知道有一个带有 Visual Studio 的 C 编译器。 /clr 不适用于 C。他不喜欢使用单独的库,因此一种可能的解决方法是将代码移植到 C++。要开始该过程,他必须将文件扩展名更改为 .cpp。我知道这会调用 C++ 编译器,这就是重点。这就是我回答的目标。
  • 好的,我明白你的意思了......关于复杂性,我想知道将这个“标准”库移植到 C++ 是否会使事情变得不那么复杂。
猜你喜欢
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 2010-10-29
  • 2021-08-31
  • 2020-10-04
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
相关资源
最近更新 更多