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