【问题标题】:MIDL Complex Types As Interface Method ParametersMIDL 复杂类型作为接口方法参数
【发布时间】:2010-06-30 13:53:34
【问题描述】:

我想知道是否有一些好的解决方案来处理无法导入 IDL 的复杂类型。我最大的担忧是使用 _m128 向量类型进行 simmed 指令,即。 XMVECTOR。 midl 编译器无法识别 __declspec,因此无法导入 __m128 数据类型。我研究过使用 wire_marshal 来执行此操作,但我认为它需要了解 __m128 类型的 typedef。如果有一种方法可以让我在前言声明 XMVECTOR 以与wire_marshal 一起使用,那么我对如何做到这一点一无所知。

我曾想过通过封装来隐藏该类型,这已经是我为反射封装数据类型的原因了。我在这里尝试了一些想法,包括从 COM 和 C++ 接口继承。这里没有什么看起来太有希望了。

很多人告诉我不要使用 COM,老实说,我花了很多时间不编码,只是想弄清楚这些东西。我的逻辑一直认为使用 COM 有很多好处,而包括 MyCOM 在内的替代方案看起来既费时又充满问题。如果这是我使用 COM 的最大问题,我应该继续前言还是解决方案会减慢这个应用程序,记住它对图形表示和实时计算建模的依赖?我正在考虑在渲染农场或云或类似的规模上做一些事情......我说话很大,我知道我是菜鸟,所以请不要试图给人留下深刻印象,只是想变得知情......我已经做了很多研究!

谢谢, 贝卡德:

【问题讨论】:

    标签: midl


    【解决方案1】:

    在我嘴里留下了一些有趣的味道:\

    typedef XMVECTOR* PTR_XMVECTOR;
    
    typedef struct _ARRAY_XMVECTOR {
            unsigned int size_array;
            [size_is(size_array*SIZE_OF_XMVECTOR)] PTR_XMVECTOR VECTOR_ARRAY;
        } ARRAY_XMVECTOR;
    
    typedef [wire_marshal(MARSHAL_AS)] ARRAY_XMVECTOR MY_VECTOR_ARRAY;
    

    我会编辑它或将其添加为评论,但可能最接近这个线程会得到答案......可能是显而易见的......抱歉回答我自己的问题:/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多