2013-03-31 184 views
2

我正處於Web服務的設計階段。我將使用MVC 4,我們正在研究Azure。我有一個非託管的C++ DLL(32位和/或64位,我們可以構建這兩個),這是我現在必須使用的內部遺留代碼。該DLL只是導出MVC代碼所需的函數(無類)。我可以在Azure上使用LoadLibrary嗎?

由於.NET DllImport語句是針對DLL名稱修復的,因此我們轉到.NET代碼中通過kernel32.dll來執行LoadLibrary。這似乎在本地很好地工作,並且有利於更改基於32/64位和/或調試版本加載的DLL。

  1. 此LoadLibrary方法是否適用於Azure?
  2. 哪裏是放圖書館的最佳地點?我在想着App_Data文件夾。
+2

應該在完整的Windows VM上正常工作。 –

回答

2

人只要很好地工作,你必須安裝在雲側(Instructions here)的Visual C++ Runtime Libraries,和本機DLL的調用被編譯爲64位。

我不知道最佳位置,我只是將本地dll放入包含包裝程序集的文件夾內的名爲「x64」(或x86 for 32bit)的文件夾內,然後將該文件夾放在項目根。

另外不要忘記將原生dll的「複製到輸出目錄」屬性設置爲「始終複製」。

+1

另一種選擇是將.dll的所有依賴關係靜態鏈接到.dll中。 – sharptooth

相關問題