【问题标题】:D8045: cannot compile C file 'serialcommands.c' with the /clr optionD8045:无法使用 /clr 选项编译 C 文件 'serialcommands.c'
【发布时间】:2009-05-19 00:20:24
【问题描述】:

我收到编译器错误 D8045。无法使用 /clr 选项编译 C 文件 'serialcommands.c'。

此文件是一个 C 库,已编写为通过串行端口与 TI 处理器通信。我需要做的任务是用 CLR 包装器包装这个库(如果你想从 CLI 问题中获得更简单的观点,将会有关于来回编组数据的其他问题发布到 stackoverflow。)

我只想从我的 CLR 包装器中使用这个 C 库。我去了 Properties->Configuration Properties->C/C++->General->Compile with Common Language runtime support = 无公共语言运行时支持

这是正确的方法吗?我以后会遇到令人讨厌的奇怪错误,还是我需要做其他事情才能使用它?

【问题讨论】:

  • 作为跟进,我现在已经使用此解决方案一年了,并且从未遇到过使用此解决方案导致的任何问题。没有我担心的“怪异”。

标签: .net c++-cli clr


【解决方案1】:

是的。你需要编译任何没有 /CLR 的 C 对象,因为 clr 只理解类和对象。

您仍然可以在您的 C++/CLI 项目中使用它们,包装在您的“引用类”对象中。这是在 .NET 对象中包装 C api 的常规方式。

【讨论】:

  • 注意:这可以“每个文件”完成,而不仅仅是每个项目,不确定在第一次阅读时从问题/答案中是否清楚。
  • 这可能会在未来帮助其他人。我将一个新的 .c 文件添加到包含 C++/CLI 和 C 文件的现有项目中,并出现此错误。在这种情况下,您似乎必须更改添加的新文件的设置,否则它们会选择项目的设置。我花了一点时间才弄清楚为什么我只在一个新文件中看到了这个问题。设置在 C++/General 下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
  • 2021-09-20
  • 2023-04-05
相关资源
最近更新 更多