我想在我的程序中使用Windows CE设备使用ini文件。 我得到了例外"找不到pinvoke dll' kernel32'" 我该怎么做才能解决这个问题?请帮帮我!
string Path = "c:\\Settings.ini";
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,
string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
public string Read(string Section,string Key,string Value)
{
StringBuilder sb = new StringBuilder();
GetPrivateProfileString(Section, Key, Value, sb, 32, Path).ToString(); // Error occured!!
return sb.ToString();
}
它适用于vs2017而不是vs2008。 请。给我你的答案!
答案 0 :(得分:0)
首先
您的 Visual Studio 版本通常不会对 Windows API 调用的兼容性产生影响。
其次
您正在调用 Windows CE
中不支持的 Windows API<强>第三强>
INI 文件是一项旧技术,主要由配置文件取代,这是世界移动的方式
<强>最后强>
如果您确实需要读取和写入 INI 文件,只需下载一个开箱即用的 Nuget (它不依赖于Windows) API)并为自己省去了很多麻烦
答案 1 :(得分:0)
所以,如果您需要的只是一个ini处理程序,几年前我为此编写了一个小型免费库,用于处理旧游戏的文件,该游戏使用ini格式进行所有设置和任务。
你可以在这里下载:
http://nyerguds.arsaneus-design.com/project_stuff/2013/nyerguds.ini/
镜:
http://www.mediafire.com/file/ldebjkppf59j13r/nyerguds.ini.zip
请注意,与大多数只搜索行并返回值的ini实现不同,这会将整个文件加载到内存中并将所有内容转换为对象,并跟踪修改的内容,因此它对于小配置很有用文件,建议不要将其用于更大的数据处理。不久之前,有些人在在线游戏系统中使用它来扫描一堆基于ini的格式的游戏地图的内容,结果发现速度很慢。
另请注意,它是text-encoding aware,默认为UTF-8,因此,如果您实际上正在阅读某些旧程序的设置,则可能需要将其设置为加载为Windows-1252,或者在DOS程序的情况下,DOS-437。由于我在制作此文件时使用的是DOS文件,因此该类提供了一个名为ENCODING_DOS_US
的DOS-437静态预设快捷方式。