Question

I have a project in which I need to link some DirectX libraries in windows 8. I cannot figure out where to find these symbols, if it's because of a mismatch between versions/runtimes or whatever somewhere or what the hell could be happening.

So I link with these libraries, under windows 8.1 (with 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)

As you can see I also include strmbase, which is the sample compiled for base classes from the windows sdk, that I compiled myself. But I still have these unresolved references:

 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...

Does anyone have any idea where to find these symbols and/or what to do to get it compiling.

Was it helpful?

Solution

The problem was that there was a precompiled library trying to find these symbols in a 64-bit library. But the precompiled library was expecting 32-bit symbols because the name mangling is different. The problem was gone when I linked against 32-bit libraries, even if my system is 64 bits.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top