我正在致力於通過DllImport
調出到第三方庫的ASP.NET MVC應用程序。DllImport - 適用於測試環境,但不適用於ASP.NET MVC
最初,在測試DllImport
如何使用MSTest工作時,我編寫了一些簡單的測試以確保正確使用它。我能夠使用整個API而沒有問題。由於抽象是圍繞進口建立的,測試繼續表明進口按預期工作,並且我能夠與外部API進行溝通。
現在我開始在ASP.NET MVC(而不是MSTest)的上下文中訪問該庫。每當我撥打電話的進口,我會遇到以下異常:
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
有什麼我應該爲了在ASP.NET MVC使用DllImport
在做什麼?
下面您可以找到初始化導入的示例。
[DllImport("pcrsrv32.dll", EntryPoint = "PCRSInitSrv", CallingConvention = CallingConvention.Cdecl)]
public static extern int InitSrv(string callerName, string iniFile);
當談到這是什麼樣子的第三方庫,我們只提供了什麼樣的C函數聲明如下所示:
HRESULT _PCRSFN PCRSInitSrv(const char *name, const char *iniFile);
最初,我允許'CallingConvention'使用默認值。我最近才轉而嘗試使用'Cdecl'。我只是試圖明確地使用'StdCall'沒有運氣:( – Priz23
你可以顯示代碼原始InitSrv方法的樣子嗎? – HABJAN
我用C函數更新了這個問題。 – Priz23