Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不影响客户端的情况下,将c api dll替换为c#dll_C#_C_Api_Interface - Fatal编程技术网

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

在不影响客户端的情况下,将c api dll替换为c#dll,c#,c,api,interface,C#,C,Api,Interface,我有一个c dll,它是一个公开了许多方法的api。我想用一个用最新语言编写的dll替换这个dll。但是,我有一些客户已经集成到了c dll,我只想给他们一个新的c#dll,它复制了c dll。我需要这样做,因为已经集成到c dll的客户根本不会受到影响。i、 我只想用c#one替换c dll,对他们来说应该是无缝的 这在技术上可行吗?如果是这样,我应该如何在c#中复制c接口呢 我在c中有很多方法dll是用dllexport定义的 __declspec(dllexport)void u stdc

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

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

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

__declspec(dllexport)void u stdcall

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

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

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