外部标头中的未识别数据类型

时间:2012-09-05 11:22:08

标签: c++ visual-studio dll include

我正在尝试使用一个带有一些运行没有问题的演示项目的库来编写.dll。当我尝试#include一个头时,编译器会抱怨某些数据类型没有定义。这是生成错误的示例

1>c:\program files (x86)\audiokinetic\wwise v2012.1.4 build 4260\sdk\include\ak\wwise\utilities.h(82) : error C2061: syntax error : identifier 'LPCWSTR'
1>c:\program files (x86)\audiokinetic\wwise v2012.1.4 build 4260\sdk\include\ak\wwise\utilities.h(90) : error C2061: syntax error : identifier 'LPCWSTR'
1>c:\program files (x86)\audiokinetic\wwise v2012.1.4 build 4260\sdk\include\ak\wwise\utilities.h(97) : error C2061: syntax error : identifier 'LPCWSTR'
1>c:\program files (x86)\audiokinetic\wwise v2012.1.4 build 4260\sdk\include\ak\wwise\utilities.h(107) : error C2061: syntax error : identifier 'LPCWSTR'
1>c:\program files (x86)\audiokinetic\wwise v2012.1.4 build 4260\sdk\include\ak\wwise\utilities.h(110) : error C2061: syntax error : identifier 'DWORD'
1>c:\program files (x86)\audiokinetic\wwise v2012.1.4 build 4260\sdk\include\ak\wwise\utilities.h(113) : error C2061: syntax error : identifier 'DWORD'

添加

#include <windows.h>
#include <atlstr.h>

这个外部的utilities.h文件解决了这个问题,但作为它的第三方标题我不相信我应该编辑它,并考虑这些其他演示项目#include与我相同的标题,它似乎表明问题出在其他地方。

任何人都可以想到这可能发生的原因。我试图使用的库是Wwise(声音引擎)。这是我链接的.libs列表

AkSoundEngine.lib
AkMemoryMgr.lib
AkStreamMgr.lib
AkMusicEngine.lib
CommunicationCentral.lib
dxguid.lib
ws2_32.lib
dsound.lib
dinput8.lib
xinput.lib

1 个答案:

答案 0 :(得分:1)

通常,这可以通过更改标题的顺序来解决。

假设名为header.h的文件具有以下内容:

LPCWSTR foo;

主持人:

// This is fail.
#include "header.h"
#include <windows.h>

尝试:

// Success!
#include <windows.h>
#include "header.h"