如何从类型库中获取函数的调用约定?
如何使用类型库在运行时获取调用约定,无论是使用 stdcall、cdecl、winapi 还是任何其他?
How can I get the calling convention at runtime using type library whether using stdcall, cdecl, winapi or any other?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果涉及类型库,则您正在使用 COM。 COM 始终使用相同的调用约定(在给定的操作系统上),因此它不会被编码到类型库中。在标题中,它显示为
STDMETHOD
(或类似的东西 - 我现在懒得检查确切的拼写),但如果没记错的话,它基本上相当于__cdecl< /代码>。如果没记错的话,还有一个
_STDMETHOD
(或者类似的东西)可以让您指定除HRESULT
之外的返回类型。If a typelibrary is involved, you're using COM. COM always uses the same calling convention (on a given OS), so it isn't encoded into the type library. In the headers it shows up as
STDMETHOD
(or something like that -- I'm too lazy to check the exact spelling at the moment), but if memory serves it's basically equivalent to__cdecl
. If memory serves, there's also an_STDMETHOD
(or, again, something similar) that lets you specify a return type other thanHRESULT
.