2013-10-23 76 views
2

我試圖使用(https://www.nuget.org/packages/UnmanagedExports)導出一些我的功能,但它似乎沒有工作。將託管功能導出到非託管

using System; 
using System.Collections.Generic; 
using System.Text; 
using RGiesecke.DllExport; 
using System.Runtime.InteropServices; 
namespace Verificare 
{ 

    static class Exports 
    { 
     [DllExport] 
     public static void Salut() 
     { 
     } 
    } 
} 

我使用的DLL資源管理器查看導出的函數,不幸的是,在我的DLL沒有導出函數。

+0

你得到了什麼結果或錯誤,預期結果與實際結果有什麼關係。你有什麼嘗試sofar –

+0

你正在爲「x86,ia64或x64」?該文檔明確指出,在構建AnyCpu時不能導出函數。 – Ani

+0

我試過x86/x64和同樣的問題。預期的結果?我應該能夠看到使用dll資源管理器輸出的功能,我沒有看到atm。 – Jonnie

回答

2

試圖在這裏證實,它按預期工作:

  • 創建一個類庫項目
  • 添加程序包從的NuGet
  • 更改配置的x86

創建一個很少的功能:

using RGiesecke.DllExport; 

namespace ClassLibrary1 
{ 
    public static class Class1 
    { 
     [DllExport] 
     public static int Hello() 
     { 
      return 1; 
     } 

     [DllExport] 
     public static void Nope() 
     { 
     } 
    } 
} 

正如你所看到的功能正確導出:

enter image description here

如有疑問,請檢查DLL與CFF Explorer,嘗試一個新的項目。

注意:當您創建項目的另一個配置時,輸出不在bin \ Debug中但在bin \ x86 \ Debug中,請確保您正在檢查正確的DLL。

+0

問題解決了(我不小心重命名了類名(Class1),這就是爲什麼它不工作)。 – Jonnie