我編下面的代碼彙編文件Test.dll的:閱讀方法
namespace dll_test
{
public class Class1
{
public int DoMagic()
{
return 12;
}
}
}
我想檢查使用DLL導出查看器我的DLL,但是當我做了我不沒有看到任何功能。
那麼問題出在哪裏?
我編下面的代碼彙編文件Test.dll的:閱讀方法
namespace dll_test
{
public class Class1
{
public int DoMagic()
{
return 12;
}
}
}
我想檢查使用DLL導出查看器我的DLL,但是當我做了我不沒有看到任何功能。
那麼問題出在哪裏?
你必須將你的函數添加到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
雖然你的第一段很好,你的代碼示例不是。什麼是「DllExport」?我無法在c#中找到它。該MSDN鏈接用於從**本地C++ dll導出**不從#c#assemblies_導出。 – MickyD
好吧,我忘了添加NuGet。我會編輯它。謝謝。 – Fruchtzwerg
啊我需要NuGet。印象深刻的套餐!感謝修改。 +1(儘管我認爲你應該指出MSDN鏈接是以本體爲中心的) – MickyD
雖然罰款的概念,要小心什麼,永遠是裝您的託管代碼,因爲本機進程一次只能加載一個版本的CLR。 [NET 4改變,但並行執行](https://msdn.microsoft.com/en-us/library/ee518876(v = vs.110).aspx) – MickyD