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