clang [bcc32c 警告] 重新声明不应添加 'dllexport' 属性

clang [bcc32c Warning] redeclaration should not add 'dllexport' attribute

我正在创建一个 DLL 并导出一个 SimpleMAPI DLL 函数,其中一个函数签名如下:

extern "C" ULONG __declspec(dllexport) WINAPI MAPISendMail(LHANDLE lhSession, ULONG_PTR ulUIParam, lpMapiMessage lpMessage, FLAGS flFlags, ULONG ulReserved);

我正在使用 C++ Builder,使用 clang 编译器。编译器发出警告:

[bcc32c Warning]: redeclaration of 'MAPISendMail' should not add 'dllexport' attribute mapi.h(262): previous declaration is here

它可以编译并工作,但我对这个警告感到困扰。可以避免吗?

正如@RemyLebeau 指出的那样,出现警告是因为我包含了 header.

如果正在创建 MAPI DLL(创建其他程序将使用的您自己的 DLL 或导出 MAPI 函数),那么如果要在自己的程序中实现 MAPI 支持,则需要的结构和 #define从原始 mapi.h 文件复制到自定义 header 文件中,然后将其包含在内。 #define 例如 FLAGSMapiMessage 结构。

如果正在使用 MAPI(因此使用从其他 DLL 或其他程序调用 MAPI 函数),则包含

因此,在创建了一个仅包含所需结构和#define 的自定义 mapidefs.h 文件后,问题现已解决。

Whosebug 上也有这个 example