如何使用c#程序从.dll调用该函数

时间:2013-11-25 05:24:02

标签: c#

我尝试使用java本机接口从.dll文件调用该函数,它成功运行,但我不知道如何使用C#从.dll调用函数,请就此提出建议。

5 个答案:

答案 0 :(得分:1)

查看MSDN中的DLLImport属性 http://msdn.microsoft.com/en-us/library/aa664436(v=vs.71).aspx

using System;
using System.Runtime.InteropServices;

class Example
{

    [DllImport("your_dll_here.dll")]
    static extern int SomeFuncion1(int parm);
    static void Main()
    {
        int result = SomeFunction1(10);
    }
}

答案 1 :(得分:1)

如果是本机DLL,则需要添加DLLImport语句,导入所需的函数。

文档为here

该属性如下所示,通常为:

[DllImport("YourDllNameHere.dll")]
public static extern int YourFunction(int input);

这将从YourDllNameHere.dll导入一个名为YourFunction的函数(它接受一个int输入,并返回一个int)。

答案 2 :(得分:0)

假设您的DLL名称为MyLibraryMyFunction是DLL中包含的函数。

首先右键点击Reference,浏览并添加您的DLL 将您的DLL声明为命名空间using MyLibrary;
你可以拨打MyFunction

另一种方式, 你可以使用这个msdn reference

答案 3 :(得分:0)

将该dll作为引用的dll添加到您的项目中的参考文件夹(右键单击引用,添加引用,然后“浏览”到您的DLL)。然后它应该可以根据需要使用,只需使用该dll作为跟随代码级别。

using System;
using YourDllName;

class ExampleClass
{
 //you can use your dll functions
}

答案 4 :(得分:0)

我喜欢Baldrick为DllImport属性提供的链接。

这就是我的建议。

  1. 下载Dependency Walker(小型应用程序exe,无需安装)。

  2. 在Dependecy Walker中打开您的DLL,以查看DLL的公开入口点。

  3. 在C#中声明对本机函数的外部调用,如下所示。

  4. C#:

    [DllImport("Your_DLL.DLL", EntryPoint="Function_Entry_Point",CallingConvention=CallingConvention.StdCall)]
    static extern IntPtr Function1();
    

    注意:

    • 如果未指定入口点,则将函数名称视为入口点。
    • 运行应用程序时,请确保本机DLL位于 同一文件夹。