如何解决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
文件转换为自定义头文件,然后将其包含在内。 #define
如 FLAGS
或 MapiMessage
结构体。
如果正在使用 MAPI(因此使用从其他 DLL 或其他程序调用 MAPI 函数),则包含
因此,在创建仅包含所需结构和 #define 的自定义 mapidefs.h
文件后,问题现已解决。
StackOverflow 上也有这个 example。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。