首先,
使用 plain C ++,没有ATL,MFC尝试使用COM Object接口。
使用 oleview (OLE / COM对象查看器) - 用于设计IDL代码。
在此阶段,使用 MIDL 编译器,现在我无法尝试生成以下内容:
cmd行语法:
midl / nologo / env win32 / tlb“。\ S8_.tlb”/ h“。\ S8_.h”/ iid“。\ S8_i.c”S8.idl
MIDL编译器错误:
S8.IDL(513):错误MIDL2025:语法错误:期望“S8SimObject”附近的类型规范
HRESULT LinkSimObjects(
[in] S8SimObject* SourceObject, ####line 513 ####
[in] S8SimObject* DestObject,
[in] float TravelTime);
答案 0 :(得分:1)
嗯,我真的不明白你的问题,但是下面应该有所帮助:
short
通常表示一个短整数,而不是单精度浮点数。float
相当于single
,但正如我在其他问题上看到的那样,我怀疑您实际上是指用single
替换float
。 顺便说一句,我建议发布一个最小的(可编译的)IDL文件(删除大多数定义),这或多或少类似于你要编译的内容。这有助于避免一些混淆,例如您在文本中使用IS8Simulation
,但在复制的IDL代码段中使用S8SimObject
。如果您指定预期结果和意外(适合您)错误,它也会有所帮助。
修改强>
嗯,您现在插入的编译错误很简单:S8SimObject
未定义。您需要始终在方法声明(IS8Simulation
)中引用接口,而不是引用实现接口的coclass。
正如您所说,您在此处更改现有的IDL文件:基本目标是什么?如果原始IDL文件始终使用S8SimObject
,那么唯一的问题可能是S8SimObject
的定义未包含在IDL文件的顶部?如果您有定义S8SimObject
的类型库,则可以使用OleView导出此接口的IDL。
答案 1 :(得分:1)
S8.IDL(513):错误MIDL2025 :语法错误:期待“S8SimObject”附近的类型规范
在IDL文件的顶部添加转发声明: