1

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

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

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

谢谢,贝卡德:

4

1 回答 1

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;

我会对其进行编辑或将其添加为评论,但可能是该线程最接近答案的答案……可能是显而易见的……抱歉回答我自己的问题:/

于 2010-06-30T05:41:08.177 回答