是否必须在Win32中运行CLR类库?

时间:2018-10-30 19:28:34

标签: c# c++-cli clr

我在VS2017中创建了一个CLR项目。

包含:

  • CLR类库(C ++).NET Framework 4.5
  • C#ConsoleApp

库中定义了一个简单的ref类。 该类是从我的C#代码中调用的。 我对它的性能很好,但是它并不总是能正常工作。

这取决于我的运行方式。

  • “调试”和“ x86”有效
  • “调试”和“ x64”不起作用
  • “发布”和“ x86”有效
  • “发布”和“ x64”不起作用

因此,在Debug and Release中,它仅在CLR类库在Win32中运行时才起作用。

我犯错了还是这是预期的行为?

谢谢!

2 个答案:

答案 0 :(得分:1)

通常,使用C ++ / CLI语言的目的(我假设这就是“ CLR库”的意思)是同时使用本机和.Net对象。由于本机代码的原因,二进制库绑定到32位或64位平台。显然,您的情况是32位(x86)。

答案 1 :(得分:0)

回答我的问题。

Hans Passant写道:

  

更改解决方案平台仅影响C ++ / CLI项目,而不影响C#项目。右键单击C#项目>“属性”>“构建”选项卡以选择要使用的抖动。取消选中x64解决方案配置的“首选32位”复选框。再次进行Release配置。

当我在“构建”部分下的C#项目属性中取消选中“首选32位”时,此方法有效。 谢谢!