繁体   English   中英

在 C# 中导入 DLL

[英]Importing a DLL in C#

我正在尝试使用 DllImport 将 dll 导入我的 C# 项目,如下所示:

[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key,string val,string filePath);

另外,我添加了命名空间 System.Runtime.InteropServices:

using System.Runtime.InteropServices;

不过,我收到一个错误:“当前上下文中不存在名称‘DllImport’”

在 class 中可以导入 dll 的位置是否有限制?

您的语句中可能还有错误的返回类型。 尝试使用bool

[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string section, string key,string val,string filePath);

参考文献: http://msdn.microsoft.com/en-us/library/ms725501(v=vs.85).aspx

编辑

DllImports 必须放在 class 的主体内。 不在方法或构造函数内部。

public class Class1
{
     //DllImport goes here:
     [DllImport("kernel32")]
     private static extern ...

     public Class1()
     {
          ...
     }

     /* snip */
}

在您的解决方案资源管理器中,右键单击引用 select 添加引用,然后将 System.Runtime.InteropServices 添加到您的项目中。

你不能using <assembly>; 如果您的项目中也没有引用它。

编辑

实际上,刚刚看到您对您的问题的评论。 我认为(有一段时间没有进行互操作了)它必须在 function 之外,在 class 的主体中。

IE:

public class MyClass
{

    [DLLImport("kernel32")]
    private static extern long WritePrivateProfileString(string sectio, string key, string val, string filePath);

    public MyClass()
    {
    }

    public void foo()
    {
    }

    // etc, etc
}

尝试添加这些参数

[DllImport("kernel32",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]

通常在导入win dll时你使用不安全的代码所以一定要检查项目设置这里有两个显示代码的简单教程

Kenler32.dll 进口代码

MSDN白衣解释

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM