C#使用DllImport方法加载DLL文件
时间: 2024-05-16 22:16:22 浏览: 120
C#中使用DllImport方法可以加载DLL文件,以便在C#程序中调用其中的函数。以下是一个基本的示例:
```csharp
using System.Runtime.InteropServices;
class Program {
[DllImport("User32.dll")]
public static extern int MessageBox(int h, string m, string c, int type);
static void Main() {
MessageBox(0, "Hello World!", "Greetings", 0);
}
}
```
在上面的示例中,使用DllImport方法加载了User32.dll,并使用MessageBox函数显示了一个消息框。需要注意的是,DllImport的参数中指定的是DLL文件的名称,而不是文件的路径。因此,需要将DLL文件复制到程序可访问的路径下,或者使用绝对路径指定DLL文件的路径。
相关问题
c# 不使用DllImport, 其他方法手动加载dll
除了使用`DllImport`之外,C#中还有一些其他方法手动加载DLL,例如使用`Assembly.LoadFrom`方法加载DLL,示例代码如下:
```csharp
// Load the assembly
Assembly myDllAssembly = Assembly.LoadFrom("mydll.dll");
// Get the type and method information
Type myType = myDllAssembly.GetType("MyType");
MethodInfo myMethod = myType.GetMethod("MyMethod");
// Invoke the method
object[] args = new object[] { 10, 20 };
object result = myMethod.Invoke(null, args);
```
以上代码中,`Assembly.LoadFrom`方法加载DLL并返回一个`Assembly`对象,之后可以通过`GetType`方法获取指定类型的`Type`对象,再通过`GetMethod`方法获取指定方法的`MethodInfo`对象,最后可以通过`Invoke`方法调用该方法。需要注意的是,如果被调用的方法是静态方法,则第一个参数传入`null`即可。
c# 不使用DllImport, 其他方法手动加载xlua.dll
在C#中手动加载`xlua.dll`可以使用以下代码:
```csharp
// Load the assembly
Assembly xluaAssembly = Assembly.LoadFrom("xlua.dll");
// Get the LuaEnv type and create an instance
Type luaEnvType = xluaAssembly.GetType("XLua.LuaEnv");
object luaEnvInstance = Activator.CreateInstance(luaEnvType);
// Get the NewTable method
MethodInfo newTableMethod = luaEnvType.GetMethod("NewTable");
// Call the NewTable method and get the table instance
object tableInstance = newTableMethod.Invoke(luaEnvInstance, null);
```
以上代码中,首先使用`Assembly.LoadFrom`方法加载`xlua.dll`,之后获取`XLua.LuaEnv`类型并通过`Activator.CreateInstance`方法创建一个实例。接下来获取`NewTable`方法的`MethodInfo`对象,并通过`Invoke`方法调用该方法,获取到一个`XLua.LuaTable`实例。需要注意的是,`NewTable`方法返回的是`XLua.LuaTable`类型,需要将其转换为`object`类型。
阅读全文