Com vtable的麻烦是我还是图书馆?

Com vtable的麻烦是我还是图书馆?,com,dll,vtable,Com,Dll,Vtable,我正在尝试使用一个COM库,它使用vtable。然而,在我调用函数之后,堆栈发生了一些奇怪的事情,这告诉我我做错了什么 带有vtable定义的头文件粘贴在这里:具体请参见从第810行开始的代码。此处粘贴了一个示例: 表中填充了函数的正确位置,但是当我调用函数时,它们似乎在堆栈上寻找错误的参数位置。此外,在调用表中的函数后,堆栈会混乱,我的程序会崩溃。我尝试将函数类型同时更改为uu cdecl和u stdcall,但这没有任何作用 要么是我的代码,要么是库,而编写库的公司还没有给我回复——因为我想

我正在尝试使用一个COM库,它使用vtable。然而,在我调用函数之后,堆栈发生了一些奇怪的事情,这告诉我我做错了什么

带有vtable定义的头文件粘贴在这里:具体请参见从第810行开始的代码。此处粘贴了一个示例:

表中填充了函数的正确位置,但是当我调用函数时,它们似乎在堆栈上寻找错误的参数位置。此外,在调用表中的函数后,堆栈会混乱,我的程序会崩溃。我尝试将函数类型同时更改为uu cdecl和u stdcall,但这没有任何作用

要么是我的代码,要么是库,而编写库的公司还没有给我回复——因为我想这是周末。此外,还有一个使用库的演示应用程序,它可以工作——因此我认为这是我的代码/编译器gcc/其他东西,而不是库


是否有什么特别的事情需要你去做才能使用COM库?

你看起来不错。这样想:您的代码与演示项目有何不同?我想解决方案就是这个不同。顺便说一句,如果你改为使用标题中定义的符号ITextGRABSDK\u CaptureFromHWND呢?我觉得它看起来完全一样。在这个例子中,我唯一没有做的就是调用CoInitialize。。。我试过了,但还是有问题。至于ITextGRABSDK\u CaptureFromHWND宏,它只是扩展到了我在代码中所做的事情。您应该仔细阅读VC++和gcc手册,了解调用约定的描述。您还应该检查调用约定的定义到底扩展到了什么。我们有自己的COM组件,我只是尝试用与您相同的方法使用它——在C源代码模式下用VC++7编译了一个示例。具有两个参数的方法称为okay。