【发布时间】:2015-12-22 14:21:53
【问题描述】:
我正在尝试用 C# 制作一个 DLL,以便在其他几种语言中使用。我找到了 RGiesecke 的 DllExport,但它似乎不起作用。它构建得很好并制作了一个 dll,但是当我在 Dependency Walker 中打开它时,它没有显示任何函数,而且我的调用代码也找不到它们。
我创建了一个新的“类库”项目(VS 2013),然后从 NuGet 安装了“非托管导出(DllExport for .Net)”。我需要任何项目设置吗?
这是我的代码。
using System;
using System.Collections.Generic;
using System.Text;
using RGiesecke.DllExport;
namespace ToolServiceDLL
{
public class Class1
{
[DllExport("addUp", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
public static double addUp(double num1, double num2)
{
return num1 + num2;
}
[DllExport("get5", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
public static int get5()
{
return 5;
}
}
}
【问题讨论】:
-
它不创建 DLL,它修改 DLL。所以这没有发生。一个令人讨厌的陷阱是,当您不运行 VS 提升时,Nuget 包将无法正确安装,失败是无声的。右键单击 VS 快捷方式并选择“以管理员身份运行”。
-
我以管理员身份运行,它在参考中显示“RGiesecke.DllExport.Metadata”。如何判断它是否尝试修改 dll?