我正在尝试使用imapi2通过在Windows上用mingw编译的c++程序写入cd-rw。我正在看一个Visual Studio c++示例。我从Microsoft SDK 7.1复制了imapi2.h到我的项目中,但是当我在 header 中包含#include“imapi2.h”并尝试进行编译时,我从imapi2.h文件中得到了很多错误。我认为这是因为为Visual Studio设置了头文件。这里有错误。是否可以使用mingw编译器使用imapi2?谢谢
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o cdtest.o "..\\cdtest.cpp"
In file included from ..\cdtest.h:7:0,
from ..\cdtest.cpp:2:
..\imapi2.h:17:0: warning: ignoring #pragma warning [-Wunknown-pragmas]
#pragma warning( disable: 4049 ) /* more than 64k source lines */
^
In file included from ..\cdtest.h:7:0,
from ..\cdtest.cpp:2:
..\imapi2.h:1148:35: error: ISO C++ forbids declaration of '__RPC__range' with no type [-fpermissive]
typedef /* [range] */ __RPC__range(0,0xffff) ULONG ULONG_IMAPI2_DVD_STRUCTURE;
^
..\imapi2.h:1148:35: error: typedef '__RPC__range' is initialized (use decltype instead)
..\imapi2.h:1150:35: error: ISO C++ forbids declaration of '__RPC__range' with no type [-fpermissive]
typedef /* [range] */ __RPC__range(0,0xfffffff) ULONG ULONG_IMAPI2_ADAPTER_DESCRIPTOR;
^
..\imapi2.h:1150:35: error: typedef '__RPC__range' is initialized (use decltype instead)
..\imapi2.h:1152:35: error: ISO C++ forbids declaration of '__RPC__range' with no type [-fpermissive]
typedef /* [range] */ __RPC__range(0,0xfffffff) ULONG ULONG_IMAPI2_DEVICE_DESCRIPTOR;
^
..\imapi2.h:1152:35: error: typedef '__RPC__range' is initialized (use decltype instead)
..\imapi2.h:1154:35: error: ISO C++ forbids declaration of '__RPC__range' with no type [-fpermissive]
typedef /* [range] */ __RPC__range(0,0x10002) ULONG ULONG_IMAPI2_DISC_INFORMATION;
^
..\imapi2.h:1154:35: error: typedef '__RPC__range' is initialized (use decltype instead)
..\imapi2.h:1156:35: error: ISO C++ forbids declaration of '__RPC__range' with no type [-fpermissive]
typedef /* [range] */ __RPC__range(0,0x10002) ULONG ULONG_IMAPI2_TRACK_INFORMATION;
^
..\imapi2.h:1156:35: error: typedef '__RPC__range' is initialized (use decltype instead)
..\imapi2.h:1158:35: error: ISO C++ forbids declaration of '__RPC__range' with no type [-fpermissive]
typedef /* [range] */ __RPC__range(0,0x100) ULONG ULONG_IMAPI2_FEATURE_PAGE;
^
..\imapi2.h:1158:35: error: typedef '__RPC__range' is initialized (use decltype instead)
..\imapi2.h:1160:35: error: ISO C++ forbids declaration of '__RPC__range' with no type [-fpermissive]
typedef /* [range] */ __RPC__range(0,0x101) ULONG ULONG_IMAPI2_MODE_PAGE;
^
[. . .]
..\imapi2.h:1194:47: error: expected ')' before numeric constant
/* [range][in] */ __RPC__in_range(6,16) ULONG CdbSize,
^
..\imapi2.h:1194:47: error: expected ')' before numeric constant
..\imapi2.h:1194:46: error: expected ';' at end of member declaration
/* [range][in] */ __RPC__in_range(6,16) ULONG CdbSize,
^
..\imapi2.h:1194:47: error: expected unqualified-id before numeric constant
/* [range][in] */ __RPC__in_range(6,16) ULONG CdbSize,
^
..\imapi2.h:1200:31: error: '__RPC__in_range' has not been declared
/* [range][in] */ __RPC__in_range(6,16) ULONG CdbSize,
[. . .]
最佳答案
为了克服这些错误,我发现每个地方都有一个#include "imapi2.h"
,需要继续使用#include rpcsal.h
。作为我系统上的替代方法,在每个#include "imapi2.h"
也起作用之前,将以下内容添加到行中。#define __RC__range(min,max)
#define __RC__in_range(min,max)