c – 如何解决这个vs10不一致的dll链接警告?

c – 如何解决这个vs10不一致的dll链接警告?,第1张

概述我有一系列的警告,我正在修复 gdcm使用visual studio 10(32位版本)时修复: 4>..\..\..\..\gdcm\Utilities\gdcmexpat\lib\xmlparse.c(647): warning C4273: 'XML_ParserCreate' : inconsistent dll linkage4> d:\src\gdcm\gdcm\u 我有一系列的警告,我正在修复 gdcm使用visual studio 10(32位版本)时修复:
4>..\..\..\..\gdcm\UtilitIEs\gdcmexpat\lib\xmlparse.c(647): warning C4273: 'XML_ParserCreate' : inconsistent dll linkage4>          d:\src\gdcm\gdcm\utilitIEs\gdcmexpat\lib\expat.h(206) : see prevIoUs deFinition of 'XML_ParserCreate'

函数调用本身就像:

XML_Parser XMLCALLXML_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 /导出.如果我猜正确,他们应该失踪.

总结

以上是内存溢出为你收集整理的c – 如何解决这个vs10不一致的dll链接警告?全部内容,希望文章能够帮你解决c – 如何解决这个vs10不一致的dll链接警告?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1235165.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存