我有一个 x86 DLL(我没有源代码),我需要从 C++ 程序 (VC++ 10) 调用它。
我被告知调用约定是从左到右,前三个参数在 EAX、ECX 和 EDX 寄存器中传递,被调用者堆栈清理(以及浮点参数/返回等其他细节)。
是否有某种方法可以自动执行此操作(例如,从包含数百个函数定义中的每一个的文件生成,或者甚至更好地“告诉”编译器有关约定)以便我可以正常调用这些函数?如果有帮助,所使用的类型都是很好的简单类型(void、int、char*、float 等)。
最佳答案
我将从查看 libffi 开始.
关于C++如何使用不支持的调用约定调用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443407/