Compartilhamento de tecnologia

global::System.Runtime.InteropServices.DllImport

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Na programação C#,[global::System.Runtime.InteropServices.DllImport] É um atributo (Atributo) usado para marcar o ponto de entrada de um código não gerenciado (geralmente uma DLL ou biblioteca escrita em C ou C++) para que o código C# possa chamá-lo. Esse recurso faz parte do mecanismo P/Invoke (Platform Invocation Services), que permite que o código C# interaja com o código em outras linguagens de programação.

Quando você vê esse recurso, ele normalmente é usado para importar uma função em uma DLL para que ela possa ser chamada de dentro do código C#. Por exemplo:

  1. using System;
  2. using System.Runtime.InteropServices;
  3. class NativeMethods
  4. {
  5. // 导入DLL中的函数
  6. [DllImport("MyNativeLibrary.dll")]
  7. public static extern int MyNativeMethod(int a, int b);
  8. }
  9. class Program
  10. {
  11. static void Main()
  12. {
  13. // 调用DLL中的函数
  14. int result = NativeMethods.MyNativeMethod(1, 2);
  15. Console.WriteLine(result);
  16. }
  17. }

Neste exemplo,MyNativeMethodé um emMyNativeLibrary.dllfunção definida em , que é importada para o código C# para que possaMainchamado no método.

DllImport As propriedades possuem vários parâmetros, mas o parâmetro mais comum é o nome da DLL (como no exemplo acima). Outros parâmetros podem incluir convenção de chamada (CallingConvention), CharSet (conjunto de caracteres usado para strings), etc.

Nota: Ao usar P/Invoke com uma DLL, você deve garantir que a DLL seja compatível com seu aplicativo (ou seja, eles usam o mesmo ambiente de tempo de execução e a DLL é compilada para seu sistema operacional e arquitetura). Além disso, como o P/Invoke ignora o sistema de segurança de tipo do C#, cuidado extra deve ser tomado para garantir que os parâmetros passados ​​e os valores retornados correspondam exatamente à assinatura da função na DLL.