我正在尝试使用一个使用vtable的COM库。然而,在我调用函数之后,堆栈正在进行一些时髦的事情,这告诉我我做错了什么。
带有vtable定义的头文件粘贴在此处:pastebin.com/m2d66c18c(特别参见从第810行开始的代码)。这里粘贴了一个示例:pastebin.com/m1b46e662。
表中正在填充函数的正确位置,但是当我调用函数时,它们似乎正在查找堆栈中参数的错误位置。此外,在调用表中的函数后,堆栈搞砸了,我的程序崩溃了。我尝试将函数类型更改为__cdecl
和__stdcall
,但这没有任何作用。
这是我的代码或图书馆,写这个图书馆的公司还没有回复我 - 因为这是周末,我假设。此外,还有一个使用该库的演示应用程序,它可以工作 - 所以我认为这是我的代码/编译器(gcc)/其他东西,而不是库。
为了使用COM库,你可能需要做些什么吗?