Приложение DirectX на 64-битных окнах - PullRequest
6 голосов
/ 27 марта 2009

Я занимаюсь разработкой приложения WPF, в котором 3D-часть обрабатывается DirectX 9 (много 3D, которые не работали достаточно быстро с использованием WPF).

Проблема в том, что приложение выпускается с «Любым ЦП» в качестве конфигурации, и когда пользователь запускает его в 64-битных окнах, происходит сбой части direcX (System.BadImageFormatException). По-видимому, библиотеки DLL, включенные для части DirectX, не могут использоваться в 64-битных окнах.

Это произошло с некоторыми другими библиотеками 3-й части, которые мы используем в нашем приложении, но мы решили эту проблему, изменив библиотеки во время выполнения на библиотеки, созданные для x64, если пользователь работает на 64-битной машине Windows. Кто-нибудь из вас знает, где я могу найти DirectX 9 dll для x64? Если они вообще существуют.

Мне нужно:

  • Microsoft.DirectX.Direct3D
  • Microsoft.DirectX.Direct3DX
  • Microsoft.DirectX

Если их не существует, можно ли решить проблему каким-либо другим способом? Я не могу изменить конфигурацию на x86, потому что приложение выпущено через ClickOnce, а изменение конфигурации приводит к тому, что ClickOnce перестает работать (конфигурация включена в ключ ClickOnce)


Позвольте мне добавить, что я использую часть Winforms, размещенную в приложении WPF, и что часть winforms использует библиотеки DirectX, о которых я спрашиваю. Это был намного лучший и быстрый способ представления большого количества 3D-мешей в WPF, чем использование WPF: 3D. К сожалению, эта проблема возникла вместо.

Ответы [ 2 ]

5 голосов
/ 27 марта 2009

DLL, которые вам нужны, предназначены для Managed DirectX. К сожалению, Microsoft больше не поддерживает Managed DirectX и является его преемником, XNA также не поддерживает 64-битную версию.

SlimDX - это альтернатива Managed DirectX с открытым исходным кодом, которая поддерживает 64-разрядную версию. Другой вариант - написать код DirectX на неуправляемом C ++.

0 голосов
/ 26 апреля 2012

Вы можете настроить приложение WPF на запуск только в качестве 32-разрядного приложения. Опубликуйте свою проблему ClickOnce как еще один вопрос SO. Это, вероятно, ваш лучший вариант.

Project Properties -> Build -> Platform Target -> x86

...