本文介绍了在C#中的PInvoke码使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用的DllImport下面的C#代码

I have the following C# code that uses DLLImport.

using System;

namespace LvFpga {
  class RegTest
  {

    [DllImport("kernel32")]
    public extern static int LoadLibrary(string lpLibFileName);
    [DllImport("kernel32")]
    public extern static bool FreeLibrary(int hLibModule);

    public static bool IsDllRegistered(string DllName)
    {
      int libId = LoadLibrary(DllName);
      if (libId>0) FreeLibrary(libId);
      return (libId>0);
    }
    public static void Main(string[] args)
    {
        Console.WriteLn(IsDllRegistered("msdia100.dll"));
    }
  }
}

当我只需运行 CSC CSCODE.cs 我得到了错误。

When I simply run csc CSCODE.cs I got the errors.

regtest.cs(7,6): error CS0246: The type or namespace name 'DllImport' could not be found (are you
        missing a using directive or an assembly reference?)
regtest.cs(7,6): error CS0246: The type or namespace name 'DllImportAttribute' could not be found
        (are you missing a using directive or an assembly reference?)
regtest.cs(9,6): error CS0246: The type or namespace name 'DllImport' could not be found (are you
        missing a using directive or an assembly reference?)
regtest.cs(9,6): error CS0246: The type or namespace name 'DllImportAttribute' could not be found
        (are you missing a using directive or an assembly reference?)

什么是错误?什么可能的选项被添加?

What's wrong? What might be added in options?

推荐答案

您必须有

using System.Runtime.InteropServices;



此外,不存在功能Console.WriteLn。您需要

Moreover, there is no function "Console.WriteLn". You need

Console.WriteLine(IsDllRegistered("msdia100.dll"));

这篇关于在C#中的PInvoke码使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 07:21