0

我正在学习 java 的路上,我想知道 C# 中的 System.load(dll) 并行/实现是什么。它像“使用”语句吗?我是 ac# 开发人员,所以也许通过一个例子,我会更好地理解它

4

3 回答 3

1

在 java :to Load a Java Native/Dynamic Library (DLL) 中,请参见以下示例:

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

于 2013-04-02T20:18:23.177 回答
1

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

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");
于 2013-04-02T20:22:22.480 回答
0

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

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

于 2013-04-02T20:24:46.617 回答