微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决clang [bcc32c 警告] 重新声明不应添加“dllexport”属性

我正在创建一个 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 指出的,发生警告是因为我包含了 标头。

如果正在创建 MAPI DLL(创建其他程序将使用的自己的 DLL 或导出 MAPI 函数),那么如果在他们自己的程序中实现 MAPI 支持,则所需的结构和 #define 将从将原始 mapi.h 文件转换为自定义头文件,然后将其包含在内。 #defineFLAGSMapiMessage 结构体。

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

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

StackOverflow 上也有这个 example

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。