我在一个DLL中调用了xmllite,编译的时候会报xmllite.h文件错误如下:error C2146: syntax error : missing ';' before identifier 'IXmlReader'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2146: syntax error : missing ';' before identifier 'IXmlReader'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2086: 'int IXmlReader' : redefinition
.h(49) : see declaration of 'IXmlReader'
error C2146: syntax error : missing ';' before identifier 'IXmlResolver'
warning C4091: '' : ignored on left of 'interface' when no variable is declared
error C2146: syntax error : missing ';' before identifier 'IXmlWriter'
warning C4091: '' : ignored on left of 'interface' when no variable is declared
error C2371: 'IXmlResolver' : redefinition; different basic types
.h(55) : see declaration of 'IXmlResolver'
: error C2371: 'IXmlWriter' : redefinition; different basic types
.h(61) : see declaration of 'IXmlWriter'
error C2061: syntax error : identifier 'IXmlReader'
error C2061: syntax error : identifier 'IXmlReader'
: error C2061: syntax error : identifier 'IXmlReader'
而我在普通的win32控制台程序中可以正常加载xmllite.lib xmllite.h等
是不是xmllite不支持DLL啊
看了半天 xmllite.h头上写了写编译配置的东西,也不知道是不是跟这个有关,请高手解答一下,多谢
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 7.00.0499 */
/* Compiler settings for xmllite.idl:
Oicf, W1, Zp8, env=Win32 (32b run)
protocol : dce , ms_ext, c_ext, robust
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING( )#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif#include "rpc.h"
#include "rpcndr.h"#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__
#ifndef __xmllite_h__
#define __xmllite_h__#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif/* Forward Declarations */ #ifndef __IXmlReader_FWD_DEFINED__
#define __IXmlReader_FWD_DEFINED__
typedef interface IXmlReader IXmlReader;
#endif /* __IXmlReader_FWD_DEFINED__ */
#ifndef __IXmlResolver_FWD_DEFINED__
#define __IXmlResolver_FWD_DEFINED__
typedef interface IXmlResolver IXmlResolver;
#endif /* __IXmlResolver_FWD_DEFINED__ */
#ifndef __IXmlWriter_FWD_DEFINED__
#define __IXmlWriter_FWD_DEFINED__
typedef interface IXmlWriter IXmlWriter;
#endif /* __IXmlWriter_FWD_DEFINED__ */
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2146: syntax error : missing ';' before identifier 'IXmlReader'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2086: 'int IXmlReader' : redefinition
.h(49) : see declaration of 'IXmlReader'
error C2146: syntax error : missing ';' before identifier 'IXmlResolver'
warning C4091: '' : ignored on left of 'interface' when no variable is declared
error C2146: syntax error : missing ';' before identifier 'IXmlWriter'
warning C4091: '' : ignored on left of 'interface' when no variable is declared
error C2371: 'IXmlResolver' : redefinition; different basic types
.h(55) : see declaration of 'IXmlResolver'
: error C2371: 'IXmlWriter' : redefinition; different basic types
.h(61) : see declaration of 'IXmlWriter'
error C2061: syntax error : identifier 'IXmlReader'
error C2061: syntax error : identifier 'IXmlReader'
: error C2061: syntax error : identifier 'IXmlReader'
而我在普通的win32控制台程序中可以正常加载xmllite.lib xmllite.h等
是不是xmllite不支持DLL啊
看了半天 xmllite.h头上写了写编译配置的东西,也不知道是不是跟这个有关,请高手解答一下,多谢
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 7.00.0499 */
/* Compiler settings for xmllite.idl:
Oicf, W1, Zp8, env=Win32 (32b run)
protocol : dce , ms_ext, c_ext, robust
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING( )#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif#include "rpc.h"
#include "rpcndr.h"#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__
#ifndef __xmllite_h__
#define __xmllite_h__#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif/* Forward Declarations */ #ifndef __IXmlReader_FWD_DEFINED__
#define __IXmlReader_FWD_DEFINED__
typedef interface IXmlReader IXmlReader;
#endif /* __IXmlReader_FWD_DEFINED__ */
#ifndef __IXmlResolver_FWD_DEFINED__
#define __IXmlResolver_FWD_DEFINED__
typedef interface IXmlResolver IXmlResolver;
#endif /* __IXmlResolver_FWD_DEFINED__ */
#ifndef __IXmlWriter_FWD_DEFINED__
#define __IXmlWriter_FWD_DEFINED__
typedef interface IXmlWriter IXmlWriter;
#endif /* __IXmlWriter_FWD_DEFINED__ */
解决方案 »
- MFC做的串口上位机程序,最大采集的AD值为什么只有62767,能不能显示最大值为32的?
- “仅通过崩溃地址找出源代码的出错行”
- 当我拖动桌面上的一个窗口,其它哪些窗口,会接收WM_PAINT消息?
- 【求助】删除一个空文件出错误,GETLASTERROR返回5。ERROR_ACCESS_DENIED Access is denied.
- 请问怎么改变ado得域名空间?
- 看com聚合时有些问题请教
- WaitForSingleObject怎么用呀?
- 初学者求教
- 关于socket的一个问题--急.....
- 自己创建的一个编辑框,怎么获得文本内容??
- 急!!!关于vc 区域生长的问题!
- DLL中内存泄露问题
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int这个应该是你的代码是V6.0的移植到高板本的VS上去了,把没有定义函数类型的地方定义为void
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7279FC81-709D-4095-B63D-69FE4B0D9030")
IXmlReader : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE SetInput(
/* */
__in_opt IUnknown *pInput) = 0;
virtual HRESULT STDMETHODCALLTYPE GetProperty(
/* */
__in UINT nProperty,
/* */
__out LONG_PTR *ppValue) = 0;
virtual HRESULT STDMETHODCALLTYPE SetProperty(
/* */
__in UINT nProperty,
/* */
__in_opt LONG_PTR pValue) = 0;
virtual HRESULT STDMETHODCALLTYPE Read(
/* */
__out_opt XmlNodeType *pNodeType) = 0;
virtual HRESULT STDMETHODCALLTYPE GetNodeType(
/* */
__out XmlNodeType *pNodeType) = 0;
这些都是定义过的,而且我是在VS2005下调用的,在写win32控制台的时候可以成功调用,但是在DLL工程里面调用的话就会出现上面的问题,不知道是不是不支持二次封装
检查一下哪里有重复定义的地方或者xmllite的头文件里面放了一些实现的东东,然后你的编译选项,有跟调用的lib不一致