我們有一個項目,由使用Marshall的C++核心庫和.NET包裝器(2.0和4.0)組成。生成機器具有Windows 8.1操作系統。在Windows 8.1上構建的.NET 4.0程序集在較低版本的Windows上無法正常工作
C++核心和.NET 2.0包裝使用MSVC 2005構建,並且適用於其他Windows版本較低的機器。
.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) –