1

该代码产生以下错误:

错误:Ini.IniFile.WritePrivateProfileString(string, string, string, string)' 必须声明一个主体,因为它没有标记为抽象、外部或部分

错误 2:Ini.IniFile.GetPrivateProfileString(string, string, string, System.Text.StringBuilder, int, string)' 必须声明一个主体,因为它没有标记为抽象、外部或部分

using System.Runtime.InteropServices;
using System.Text;

namespace Ini
{
  public class IniFile
  {
    public string path;

    public IniFile(string INIPath)
    {
      this.path = INIPath;
    }

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

    [DllImport("kernel32")]
    private static int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

    public void IniWriteValue(string Section, string Key, string Value)
    {
      IniFile.WritePrivateProfileString(Section, Key, Value, this.path);
    }

    public string IniReadValue(string Section, string Key)
    {
      StringBuilder retVal = new StringBuilder((int) byte.MaxValue);
      IniFile.GetPrivateProfileString(Section, Key, "", retVal, (int) byte.MaxValue, this.path);
      return ((object) retVal).ToString();
    }
  }
}
4

1 回答 1

1

使用 PInvoke 调用原生方法时,需要包含 extern。例如:

static extern bool WritePrivateProfileString(string lpAppName,
   string lpKeyName, string lpString, string lpFileName);

http://www.pinvoke.net/default.aspx/kernel32.writeprivateprofilestring

于 2013-10-31T18:00:20.273 回答