Я использую эту функцию уже несколько месяцев, однако сегодня она перестала работать. Я не могу представить, почему, и я ничего не решаю, поэтому, если у вас есть идеи, пожалуйста, расскажите!Weird exception при попытке DllImport from kernel32
Я загрузка функции таким образом:
[DllImport("kernel32")]
private static extern int GetPrivateProfilestring(string section, string key, string def, StringBuilder retVal, int size, string filePath);
, а затем я пытаюсь использовать его таким образом:
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfilestring(Section, Key, "", temp, 255, strPath);
return temp.ToString();
как сказал это работало в течение веков, однако теперь он бросает это исключение:
System.EntryPointNotFoundException: Не удается найти точку входа с именем 'GetPrivateProfileString' в DLL 'kernel32'
Зачем это произошло? Возможно ли, что dll было изменено (обновлением Windows или чем-то)? Может быть, его просто невозможно найти, иначе исключение будет отличаться? Я знаю, что это маловероятно, однако, как я уже сказал Im решение ничего из этого, так как не всегда работал и исходный код не был изменен ...
Update: Как ни странно, капитализация помогла, швы работать Теперь. Однако мне все еще интересно узнать, почему это произошло, и почему это произошло сейчас? Я могу заверить вас, что он работал уже несколько месяцев.
Я немного боюсь просто менять его и обновлять наше программное обеспечение повсюду, поскольку ошибка произошла только на моей машине (насколько я знаю, так или иначе), однако старый метод работает в производстве на разных ПК и конфигурациях более 6 месяцев.
Как указано в разделе обновления вопроса, это действительно помогло. Однако я не могу понять, как это работает до сих пор, если это действительно было причиной ошибки. –
Возможно, у вас было поле «EntryPoint», в котором записано имя функции? Я не знаю, что сказать. Вы можете попробовать посмотреть старый код, который работает и разобрать его, чтобы увидеть, как он был объявлен. – Blindy