用C#dll替换c api dll而不影响客户端

问题描述 投票:0回答:1

我有一个c dll,这是一个暴露许多方法的api。我想用一个用更新语言编写的dll替换这个dll。但是,我已经有了已经集成到c dll的客户,我想给他们新的c#dll复制c dll。我需要这样做,因为集成到c dll的客户根本不受影响。即我只想用c#one替换c dll,它看起来应该是无缝的。

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

我在c dll中有许多方法是用dllexport定义的

__declspec(dllexport)void __stdcall

c# c api interface
1个回答
1
投票

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

您可以使用C ++ / CLI,通过构建将本机接口公开给非托管代码的混合模式dll来实现。然后你就像正常一样分发dll和.lib文件,而客户端代码只会链接到.lib文件(因为它现在可能就是这样)。

不过,这是一项相当多的工作。除非原始C dll存在一些问题,否则我认为不会遇到麻烦。

© www.soinside.com 2019 - 2024. All rights reserved.