【问题标题】:Can we use "Boost" librarys in our own librarys compiled under CLR?我们可以在 CLR 下编译的我们自己的库中使用“Boost”库吗?
【发布时间】:2010-09-08 12:22:06
【问题描述】:

所以很容易创建一个win 32项目并使用boost。我还没有尝试过,但我打算这样做。我想知道我是否可以在 CLR 模式下使用 boost。可能吗?有人试过吗?

【问题讨论】:

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


    【解决方案1】:

    是的,这应该不是问题。很少有本地 C++ 结构无法转换为 IL。 Varargs 曾经是一个问题,但已经解决了,我只知道 __fastcall 是不可翻译的。不会有问题,Boost不会使用它。我知道的唯一另一个问题是有很多全局变量。它们需要嵌入到 CLR 类中,并且一个类不能有超过 65535 个字段。当 CLR 加载程序尝试加载程序集时,您会遇到异常。你需要一些漂亮的、呃、特殊的代码来接近这个限制。

    次要考虑是这样做是否真的有意义。首先使用本机代码的目的是利用代码优化器可以花在优化上的时间。您通过将代码翻译成 IL 来抛弃它,JIT 优化器没有同样的奢侈。

    利用 C++ 互操作,它可以从托管值类型转换为本机类型,而无需编写任何胶水代码。只需即时关闭 IL 生成即可。像这样:

    #pragma managed(push, off)
    // Native code goes here
    //...
    #pragma managed(pop)
    // Managed code goes here
    

    【讨论】:

      猜你喜欢
      • 2013-03-20
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多