在不影响客户端的情况下,用C#dll替换c api dll

时间:2019-04-05 15:13:39

标签: c# c api interface

我有一个c dll,这是一个公开许多方法的api。我想用一种使用最新语言编写的dll替换该dll。但是,我有已经集成到c dll的客户,我只想给他们提供复制c dll的新c#dll。我需要这样做,因为集成到c dll的客户根本不会受到影响。也就是说,我只想用c#替换c dll,对他们来说应该是无缝的。

这在技术上可行吗?如果是这样,我应该如何在c#中复制c接口。

我在C dll中有很多方法是用dllexport定义的

__ declspec(dllexport)无效__stdcall

1 个答案:

答案 0 :(得分:1)

使用C#dll无法做到这一点。您将不得不为托管dll编写一个COM包装器,然后客户端代码必须链接到COM包装器的类型库(* .tlb)。

您可以使用C ++ / CLI来做到这一点,方法是构建一个混合模式的dll,以将本机接口公开给非托管代码。然后,您将像通常一样分发dll和.lib文件,并且客户端代码将仅链接到.lib文件(大概现在如此)。

这是相当多的工作。除非原始的C dll出现问题,否则我认为不会麻烦。