我正在尝试使用一些演示项目附带的库编写.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>


这个外部Utility.h文件可以解决该问题,但是由于它不是第三方标头,所以我不认为我应该对其进行编辑,并且考虑到其他演示项目#包括与我相同的标头,这似乎表明问题出在其他地方。

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

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

最佳答案

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

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

LPCWSTR foo;


在您的主要:

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


尝试:

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

关于c++ - 外部 header 中的数据类型不确定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12280333/

10-11 19:38
查看更多