问题:是否可以编写一个可以被编程的C#dll?
我想为WinAPI调用WritePrivateProfileString等编写替换库,以便读取和编写ini文件。
是否可以导出功能,例如'WritePrivateProfileString',在C#中实现,所以可以用DllImport对dll进行pinvoke吗?
我想用托管dll替换本机dll,因此当托管dll在bin目录中时,通过pinvoke调用(而不是本机dll)调用托管dll。
答案 0 :(得分:7)
与普遍看法相反, 是可能的。 (请注意,您需要修改要从DLL导入的调用应用程序)
请参阅here。
但是,在你的情况下,这不一定是个好主意
为什么不将extern
声明更改为调用替换的普通方法?
答案 1 :(得分:1)
这不容易,但使用一些“黑客”可以done
但是COM可能是更好的选择,因为很容易从C#导出com对象并使用VB6中的com对象。然后将extern声明更改为调用你的普通方法是你的com对象。
答案 2 :(得分:0)
尝试使用Mono Cecil将第三方程序的extern
方法更改为调用DLL的方法(无P / Invoke)。
Reflector将在这里提供帮助。