Непонятки при попытке [DllImport("kernel32")]
От: xakpc Россия linkedin.com/in/xakpc
Дата: 10.03.10 11:08
Оценка:
Здравствуйте. Возникла необходимость работать с ini файлом.
Естественно первая идея — импорт WritePrivateProfileString.
Накидал класс:

 /// <summary>
    /// Класс работы с ini-функциями
    /// </summary>
    public class IniFileManager
    {
        #region Private Member Declaration
        /// <summary>
        /// Путь к ini-файлу
        /// </summary>
        private String _iniFile = "";
        #endregion        

        #region Dll Import
        // Импорт функций
        [DllImport("kernel32", SetLastError = true)]
        private static extern long WritePrivateProfileInt(String Section, String Key, int Value, String FilePath);
        [DllImport("kernel32", SetLastError = true)]
        private static extern long WritePrivateProfileString(String Section, String Key, String Value, String FilePath);
        [DllImport("kernel32", SetLastError = true)]
        private static extern int GetPrivateProfileInt(String Section, String Key, int Default, String FilePath);
        [DllImport("kernel32", SetLastError = true)]
        private static extern int GetPrivateProfileString(String Section, String Key, String Default, StringBuilder retVal, int Size, String FilePath);
        #endregion

        #region Constructors
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="iniFile">Путь к файлу</param>
        public IniFileManager(String iniFile)
        {
            this._iniFile = iniFile;
        }
        #endregion

        #region Public Methods
        /// <summary>
        /// Чтение строки
        /// </summary>
        /// <param name="section">Секция</param>
        /// <param name="key">Название ключа</param>
        /// <param name="defaultValue">Значение по умолчанию</param>
        /// <returns></returns>
        public String ReadString(String section, String key, String defaultValue)
        {
            StringBuilder strBu = new StringBuilder(255);
            GetPrivateProfileString(section, key, defaultValue, strBu, 255, _iniFile);
            return strBu.ToString();
        }

        /// <summary>
        /// Чтение целого числа
        /// </summary>
        /// <param name="section">Секция</param>
        /// <param name="key">Название ключа</param>
        /// <param name="defaultValue">значение по умолчанию</param>
        /// <returns></returns>
        public int ReadInt(String section, String key, int defaultValue)
        {
            return GetPrivateProfileInt(section, key, defaultValue, _iniFile);
        }

        /// <summary>
        /// Запись строки
        /// </summary>
        /// <param name="section">Секция</param>
        /// <param name="key">Название ключа</param>
        /// <param name="value">Строка для записи</param>
        public void WriteString(String section, String key, String value)
        {
            WritePrivateProfileString(section, key, value, _iniFile);
        }

        /// <summary>
        /// Запись целого числа
        /// </summary>
        /// <param name="section">Секция</param>
        /// <param name="key">Название ключа</param>
        /// <param name="value">Число для записи</param>
        public void WriteInt(String section, String key, int value)
        {
            WritePrivateProfileInt(section, key, value, _iniFile);
        }
        #endregion        
    }


Но при попытке вызова функций: Unable to find an entry point named 'WritePrivateProfileInt' in DLL 'kernel32'.
В чем может быть проблема?
dllimport
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.