You need to calculate the angle between two vectors, then use that angle to turn that amount.
The angle between two vectors is given in this formula:
angle = acos( v1 • v2 )
That is v1 DOT PRODUCT v2, not times (multiplication). The dot product is a math function available in DarkGDK.
v1 would be the vector from one object to another (from the player to the object) and v2 would be the players current facing vector.
To find out which way to turn you have to use vector projection.
Here is some code I wrote for another project (not using DarkGDK but still using C++/DirectX)
// Get the dot product of the two vectors
float fDotProduct = D3DXVec3Dot( &vOne, &vTwo );
// Find the length of each vector
float fLengthOne = D3DXVec3Length( &vOne );
float fLengthTwo = D3DXVec3Length( &vTwo );
// Cross vector one and two to get three
D3DXVec3Cross( &vThree, &vOne, &vTwo );
// Formula for angle between two vectors
fTemp = (float)acos( ( fDotProduct / ( fLengthOne * fLengthTwo ) ) ) * 180.0f / D3DX_PI;
// Project Vector Two
float fProjection = fLengthTwo * (float)cos( fTemp * D3DX_PI / 180.0f ) * 180.0f / D3DX_PI;
// Set the rotation amount
StoryBox::getInstance( )->getPlayer( 0 )->setRotation( fTemp * fabs( vThree.y ) / vThree.y - 90 );
There are lots of resources about this online if you search for "angle between two vectors" and "vector projection".