У меня есть форма под названием VideoForm, у которой есть проигрыватель Windows Media Player.
public AxWMPLib.AxWindowsMediaPlayer player;
Когда я открываю VideoFrame.cs [Design], я получаю две ошибки:
Не удалось найти тип 'AxWMPLib.AxWindowsMediaPlayer'
Переменная "игрок" либо не объявлена, либо никогда не была назначена.
Если я создам новую форму в своем решении и попытаюсь добавить к ней проигрыватель Windows Media, я получаю эту ошибку:
Не удалось создать компонент "AxHost". Появляется сообщение об ошибке: "System.Reflection.ReflectionTypeLoadException: невозможно загрузить один или несколько запрошенных типов.
(с тонны типов, перечисленных ниже, в основном в зависимости от того, "что инструмент должен сделать для контроля")
Я попытался: перезапустить Visual Studio, перезагрузить компьютер, удалить и повторно импортировать библиотеки, переключиться на 32, создать, затем вернуться к 64 и снова создать и вручную найти файлы lib на моей машине.
Но вот странно part-, если я закрою это решение, откройте другое, добавьте проигрыватель Windows Media, скомпилируйте его до 64 бит, затем закройте и снова откройте оригинальное решение. Я не получаю ошибки!
EDIT: При попытке вышеперечисленного "взломать" я получаю следующие две ошибки:
Предупреждение Обработка COM-ссылки "WMPLib" из пути "C:\Windows\system32\wmp.dll". Импортер библиотеки типов обнаружил свойство getter 'sessionPlaylistCount' в типе 'WMPLib.IWMPNowPlayingHelperDispatch' без допустимого типа возврата. Импортер попытается импортировать это свойство как метод вместо этого.
and
Обработка COM-ссылки "WMPLib" из пути "C:\Windows\system32\wmp.dll". По крайней мере один из аргументов для "IWMPGraphEventHandler.NotifyAcquireCredentials" не может быть маршалирован маршалером времени исполнения. Поэтому такие аргументы будут переданы как указатель и могут потребовать манипулирования небезопасным кодом.
Я думаю, что у меня происходит утечка памяти, но я в недоумении, и я ничего не вижу во время выполнения ни в потоках, ни в потоках Threads, ни в GPU.
Я не считаю, что это мой код вызывает это, однако, если вы хотите увидеть комментарий к коду, и я добавлю соответствующие части.
Я нашел решение этой проблемы:
{
Warning 1 Processing COM reference "WMPLib" from path "C:\Windows\system32\wmp.dll". Type library importer encountered a property getter 'sessionPlaylistCount' on type 'WMPLib.IWMPNowPlayingHelperDispatch' without a valid return type. The importer will attempt to import this property as a method instead.
Warning 2 Processing COM reference "WMPLib" from path "C:\Windows\system32\wmp.dll". At least one of the arguments for 'IWMPGraphEventHandler.NotifyAcquireCredentials' cannot be marshaled by the runtime marshaler. Such arguments will therefore be passed as a pointer and may require unsafe code to manipulate.
}
я должен отредактировать свое слово! Если вы получите эту ошибку, это не означает, что ваше приложение не будет работать. Но если вы скомпилируете свою программу, не запускайте файл установки в старой Windows. Вы можете установить следующее: установить ракурс вашей программы на 4 клиентскую версию и установить платформу программы для X86 и создайте свой установщик на клиенте Framework 4