2015-11-21 105 views
2

我編下面的代碼彙編文件Test.dll的閱讀方法

namespace dll_test 
{ 
    public class Class1 
    { 
     public int DoMagic() 
     { 
      return 12; 
     } 
    } 
} 

我想檢查使用DLL導出查看器我的DLL,但是當我做了我不沒有看到任何功能。

enter image description here

那麼問題出在哪裏?

+0

雖然罰款的概念,要小心什麼,永遠是裝您的託管代碼,因爲本機進程一次只能加載一個版本的CLR。 [NET 4改變,但並行執行](https://msdn.microsoft.com/en-us/library/ee518876(v = vs.110).aspx) – MickyD

回答

3

你必須將你的函數添加到dll-export表。在這個表格中是可以在可執行文件中使用的所有函數的名稱。要在C#中執行此操作,您必須添加非託管導出(DllExport for .Net)(https://www.nuget.org/packages/UnmanagedExports)。

然後添加DLLEXPORT在靜態方法是這樣的:

[DllExport("DoMagic", CallingConvention=System.Runtime.InteropServices.CallingConvention.StdCall)] 
public static int DoMagic() 
{ 
    return 12; 
} 

您發現https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports#TOC-C-信息或MSDN:https://msdn.microsoft.com/en-us/library/z4zxe9k8.aspx

+1

雖然你的第一段很好,你的代碼示例不是。什麼是「DllExport」?我無法在c#中找到它。該MSDN鏈接用於從**本地C++ dll導出**不從#c#assemblies_導出。 – MickyD

+0

好吧,我忘了添加NuGet。我會編輯它。謝謝。 – Fruchtzwerg

+0

啊我需要NuGet。印象深刻的套餐!感謝修改。 +1(儘管我認爲你應該指出MSDN鏈接是以本體爲中心的) – MickyD