【发布时间】:2012-07-21 02:43:11
【问题描述】:
我刚刚从某个地方下载了这个非常简单的 ini 类,但现在我使用的是单声道,我遇到了它从 kernel32 导入东西的问题
[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);
在单声道(在 linux 中)哪个会给出错误 DLLNotFoundException: kernel32
有没有办法让它与单声道一起工作?也许在编译时将整个东西嵌入到程序集中(如果这甚至有道理,我不知道)。或者我会有创建/查找不使用 WinAPI 的 ini 类吗? (想到妮妮)。
如果 WinAPI 的东西可以与 Mono 一起使用,我真的很高兴,有什么想法吗?
【问题讨论】:
-
好吧,这当然行不通。无论如何,您都需要远离这些 api,它们非常昂贵并且不支持一致的字符串编码。使用 xml。
-
难道 Mono 是区分大小写的吗?尝试导入 Kernel32,大写字母 K。
-
@HansPassant 我会听取您的建议,并为将来的项目转移到 xml,但我想知道是否有 any 方法可以在 Mono 中获取 WinAPI 函数不管。我需要快速修复一些真正不“值得”工作足够长时间以摆脱 WinAPI 依赖的个人使用应用程序。如此肮脏、远非最佳的修复是受欢迎的。如果这是不可能的,那么我只是不走运,但我想确定;)
-
仔细检查一下,您是在 Windows 上运行 Mono,对吗? Mono 不会将 Win32 API 带到其他平台(Wine 会,但这可能是一个棘手的集成)。如果您在 Windows 上运行,为什么要使用 Mono 而不是 MS CLR?
-
@Sblom 不,我没有在 windows 上使用单声道,我在 linux 上运行它。我可能应该提到 -.-