C++如何使用不支持的调用约定调用代码

标签 c++ visual-c++ x86 calling-convention

我有一个 x86 DLL(我没有源代码),我需要从 C++ 程序 (VC++ 10) 调用它。

我被告知调用约定是从左到右,前三个参数在 EAX、ECX 和 EDX 寄存器中传递,被调用者堆栈清理(以及浮点参数/返回等其他细节)。

是否有某种方法可以自动执行此操作(例如,从包含数百个函数定义中的每一个的文件生成,或者甚至更好地“告诉”编译器有关约定)以便我可以正常调用这些函数?如果有帮助,所使用的类型都是很好的简单类型(void、int、char*、float 等)。

最佳答案

我将从查看 libffi 开始.

关于C++如何使用不支持的调用约定调用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443407/

相关文章:

c++ - 具有相邻位置 View 的 Win32 内存映射文件

c++ - Visual C++ - 将 double 和整数写入二进制文件

assembly - 为什么 x86 跳转/调用指令使用相对位移而不是绝对目的地?

c++ - 可以在单个 CPU 指令中在 0 和 1 之间翻转位/整数/ bool 值的任何可能代码

c++ - Linux _SC_PHYS_PAGES 在 Mac OS X 上不工作

c++ - 将不同的 vector <*>混合成一个 vector

c++ - 检查两个图形是否互补的功能

c++ - OpenCV imgcodecs.hpp 文件未找到错误

c++ - 未初始化的常量