我有一个项目,我需要在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位,问题也消失了。