У нас есть проект, состоящий из основной библиотеки C++ и оболочек .NET (2.0 и 4.0) с использованием Marshall. Сборка машины имеет ОС Windows 8.1..NET 4.0 сборка, построенная на окнах 8.1, не работает на более низких версиях Windows
Ядро C++ и оболочка .NET 2.0 построены с использованием MSVC 2005 и отлично работают на других машинах с более низкими версиями окон.
.NET 4.0-оболочка построена с использованием Microsoft SDK 7.1. Библиотека прекрасно работает на машине построения, но падает на других машинах (с .NET 4.0 установлена) с следующей ошибкой:
Exception: System.MissingMethodException: Method not found: 'IntPtr System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(!!0)'.
Похоже оберткой была построена с использованием более высокую версии .NET и я понятия не имею, как решить это. Насколько я понял, нет возможности принудительно использовать определенную версию .NET 4.x при построении, хотя они не поддерживают обратную совместимость.
Общая версия 'GetFunctionPointerForDelegate' существует только с .NET 4.5.1. Убедитесь, что вы используете тот, который принимает делегат, отбрасывая на него делегата. – zneak
@zneak Благодарим вас за ответ.Да, я уверен, что поддерживается поддерживаемый метод. Это: [MSDN] (http://msdn.microsoft.com/ru-ru/library/at4fb09f%28v=vs.110%29.aspx) –