我想知道是否有一些很好的解决方案来处理无法导入IDL的复杂类型。我最关心的是使用_m128矢量类型进行模拟指令,即。 XMVECTOR。 midl编译器无法识别__declspec,因此导入__m128数据类型是不可能的。我调查使用wire_marshal来做这个,但我认为它需要知道__m128类型的typedef。如果有一种方法我可以foreword_declare XMVECTOR与wire_marshal一起使用我对如何做到这一点并不是最模糊的。
我曾想过通过封装它来隐藏类型,它已经存在,我正在封装Reflection的数据类型。我在这里玩了一些想法,包括继承COM和C ++接口。这里没什么看起来太有希望了。
很多人告诉我不要使用COM,老实说,我花了很多时间不编码,只是试图弄清楚这些东西。我的逻辑继续看到使用COM的很多好处,包括MyCOM在内的替代方案看起来既费时又充满问题。如果这是我使用COM的最大问题,我应该继续前言还是解决方案会降低这个应用程序的速度,还要记住它对图形表示和实时计算建模的依赖?我正在寻找做渲染农场或云或其他类似事物的东西...我说话很大,我知道我是菜鸟所以请,不要试图留下深刻的印象只是为了获得通知......我已经做了很多研究!
THX, BekaD:
答案 0 :(得分: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;
我会将其编辑或添加为评论,但可能是最接近这个帖子的答案......可能是显而易见的......抱歉回答我自己的问题:/