我有一个项目,我需要在Windows 8中链接一些DirectX库。如果是由于版本/运行时之间不匹配或任何地方或发生什么事情的原因,我无法弄清楚在哪里可以找到这些符号。

因此,我在Windows 8.1(带有cmake)下链接了这些库:

set(MY_LIBS
    general dsound
    general d3d9
    general dxerr
    general strmiids
    general comctl32
    general winmm
    general pdh
    general ComDlg32
    general Gdi32
    general User32
    general Ole32
    general oleaut32
    general Msimg32
    general opengl32
    general glu32
    general PowrProf
    general strmbase)


如您所见,我还包括了strmbase,这是我自己编译的从Windows sdk为基类编译的示例。但是我仍然有这些未解决的参考:

 error LNK2019: unresolved external symbol _DirectSoundCaptureEnumerateW@8 referenced in...

 error LNK2019: unresolved external symbol _GetDeviceID@8 referenced in...

 error LNK2001: unresolved external symbol _GetDeviceID@8
 error LNK2019: unresolved external symbol _DirectSoundEnumerateW@8 referenced in...
 LNK2019: unresolved external symbol _DirectSoundCaptureCreate8@12 referenced in function...
 error LNK2019: unresolved external symbol _DirectSoundCreate@12 referenced in function...


有谁知道在哪里可以找到这些符号和/或如何进行编译。

最佳答案

问题在于,有一个预编译的库试图在64位库中找到这些符号。但是,预编译库期望使用32位符号,因为名称处理是不同的。当我链接到32位库时,即使我的系统是64位,问题也消失了。

10-08 12:49