C#中System.load(dll)的实现是什么?

时间:2013-04-02 20:17:10

标签: c# java

我正在学习java的过程中,我想知道C#中的System.load(dll)并行/实现是什么..它是否像“using”语句一样?我是一个c#开发人员,所以也许有一个例子,我会更好地理解它

3 个答案:

答案 0 :(得分:1)

在java中:加载Java本机/动态库(DLL),see this example :

import com.chilkatsoft.CkZip;

public class Test {

  static {
    try {
        System.load("C:/chilkatJava/chilkat.dll");
    } catch (UnsatisfiedLinkError e) {
      System.err.println("Native code library failed to load.\n" + e);
      System.exit(1);
    }
  }

  public static void main(String argv[]) 
  {
    CkZip zip = new CkZip();
    System.out.println(zip.version());    
  }
}

在C#:尝试此链接答案:https://stackoverflow.com/a/1087851/1743852

答案 1 :(得分:1)

在C#中,您可以使用Reflection在运行时动态加载库:

System.Reflection.Assembly myDllAssembly = 
   System.Reflection.Assembly.LoadFile("%MyDLLPath%\\MyDLL.dll");

之后,您将能够从该汇编中搜索类型:

System.Type MyDLLFormType = myDllAssembly.GetType("MyDLLNamespace.MyDLLForm");

创建该类型的对象:

Form MyDLLFormInstance = (Form)myDllAssembly.CreateInstance("MyDLLNamespace.MyDLLForm");

答案 2 :(得分:0)

在C#中,您无法加载本机dll,而是P / Invoke它们!

  

P / Invoke或Pinvoke代表平台调用服务。的PInvoke   是Microsoft .NET Frameowrk的一项功能,允许开发人员使用   在动态链接库(DLL)中调用本机代码。   当Pinvoking,.NET框架(或公共语言例程)将   加载DLL并自动处理类型转换。最多   P / Invoke的常见用途是使用仅限Windows的功能   包含在Win32 API中。 Windows中的API非常广泛   并且只有部分功能封装在.NET库中。