我有一系列的警告,我正在修复
gdcm使用visual studio 10(32位版本)时修复:
4>..\..\..\..\gdcm\Utilities\gdcmexpat\lib\xmlparse.c(647): warning C4273: 'XML_ParserCreate' : inconsistent dll linkage 4> d:\src\gdcm\gdcm\utilities\gdcmexpat\lib\expat.h(206) : see prevIoUs deFinition of 'XML_ParserCreate'
XML_Parser XMLCALL XML_ParserCreate(const XML_Char *encodingName) { return XML_ParserCreate_MM(encodingName,NULL,NULL); }
哪里
#define XMLCALL __cdecl
和
XMLPARSEAPI(XML_Parser) XML_ParserCreate(const XML_Char *encoding);
哪里
#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
和
#define XMLIMPORT __declspec(dllimport)
如果我正在正确阅读,那意味着通过XMLCALL一直是__cdecl的链接 – 对吗?因为如果是这样,那么警告是多余的,还是我误解了这个?
解决方法
不,它抱怨__declspec(dllimport)从函数定义中丢失,但存在于函数声明中.您应该认真对待这一点,声明从DLL导入的函数也是您的代码中没有意义的.你不能有两种方式.
这通常是由于缺少#define引起的.我想,编辑了宏定义,但是当构建DLL时,通常在build命令(/ D)中指定一个宏.所以函数的声明使用dllexport而不是dllimport.这确保函数从DLL导出.客户端代码使用相同的.h文件,但是在没有定义该宏的情况下构建.它看到声明为dllimport的函数.
仔细看一下XMLIMPORT宏定义,__declspec(dllexport)应该是关闭的.另一个诊断是DLL的导出,可见与Dumpbin.exe /导出.如果我猜正确,他们应该失踪.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。