Es fallen mir vier Hauptlösungen ein.
Zunächst muss eine ältere Version des DirectX-SDK verwendet werden. Ich scheine mich zu erinnern, dass Versionen von Roundabout 2004 oder früher statisch verknüpft waren (aber wenn eine größere ausführbare Datei Sie erschreckt, ist dies möglicherweise keine Option), und es ist auch der Fall, dass Sie eine Version von 2006/2007 oder früher als die verwenden Benötigte D3DX-DLLs haben eine viel höhere Chance, auf dem Computer zu sein. Dies hat den Nachteil, dass Sie Bugfixes, Leistungsverbesserungen und verbesserte Funktionen in den neueren SDKs verpassen werden (dies schließt auch jede andere Version von D3D als 9 aus).
Die zweite Lösung besteht darin, LoadLibrary und GetProcAddress für die D3DX-Funktionen zu verwenden. Sie wählen eine maximal und minimal unterstützte Version aus (z. B. von _42 bis _34), gehen dann in eine Schleife von max nach min, konstruieren den DLL-Namen und versuchen, ihn mit LoadLibrary zu laden. Wenn Sie es in Ordnung laden, führen Sie eine Reihe von GetProcAddress-Aufrufen durch und verwenden Ihre Funktionszeiger anstelle der unformatierten D3DX-Funktionen. Ein bisschen wie OpenGL-Erweiterungen, wenn Sie wissen, wovon ich spreche. Dies ist möglicherweise ein wenig haarig, und Sie müssen sich möglicherweise noch mit dem Fall befassen, in dem Sie keine DLL in Ihrem Bereich finden können. Aber ich habe dieses in der Vergangenheit benutzt und es funktioniert gut genug.
Die dritte Lösung ist, D3DX einfach nicht zu verwenden. Könnte in einigen Fällen eine Option sein, in Ihrem Fall möglicherweise keine Option.
Die vierte und letzte Lösung besteht darin, Ihre Benutzer anzuweisen, ihr Direct 3D-System zu aktualisieren. Sie sollten das auf jeden Fall tun, es ist ein kleiner und schneller Download von Microsoft und es ist ein sofortiger Problemlöser. Ihre Benutzer möchten dies möglicherweise nicht tun, und Sie müssen sich möglicherweise mit Fragen wie "Ich habe bereits D3D11, warum muss ich mein D3D9 aktualisieren" befassen, aber unter dem Strich kann es insgesamt wirtschaftlicher sein es auf der Nase.