管理程序及其DLL插件之间的调用约定兼容性的标准方法是什么?

问题描述 投票:-1回答:1

我正在构建一个C程序,该程序显式动态地将DLL加载为插件系统的一部分。我在Windows 7上将GCC与MinGW一起使用。

DLL中导出的函数应使用哪种调用约定,以使其尽可能强大:在不同的Windows计算机上成功运行,在不同的编译器版本中生存,等等。>

我知道主可执行文件和DLL只需要使用相同的调用约定。通常如何管理?

目前,我只打算支持Windows(尽管也欢迎在Linux上也提到同一主题的答案。)>

编辑:

[请让我澄清这个问题,如@S的评论部分所述。 S. Anne。

我不太担心特定的调用约定。我更关心确保在X机上构建的二进制文件与在Y机上其他人构建的DLL(插件)之间兼容的标准方法是什么,这可能具有不同的OS等。

我能想到的一种方法是,在分发给插件开发人员的头文件中,我们定义一个宏,该宏指定插件向主程序公开的函数的预期调用约定。这些功能将由插件开发人员使用此宏定义。

例如,提供给插件开发人员的api.h标头定义了#define CALL __cdecl。然后,在执行#include "api.h"之后,将插件DLL中的导出函数声明为:void CALL func(void);

此解决方案是否在实践中使用?有不同的方法吗?

我正在构建一个C程序,该程序显式动态地将DLL加载为插件系统的一部分。我在Windows 7上将GCC与MinGW一起使用。DLL中导出的函数应使用哪种调用约定...

c windows gcc mingw calling-convention
1个回答
0
投票

编辑以下问题编辑

否,您不必“确保在计算机X上构建的二进制文件与在计算机Y上由其他人构建的DLL(插件)之间的兼容性,该DLL可能具有不同的OS等,”

© www.soinside.com 2019 - 2024. All rights reserved.