在c++代码中使用c# dll而不使用Regasm

本文关键字:Regasm dll c++ 代码 | 更新日期: 2023-09-27 18:10:49

我创建了一个c++应用程序,它使用了c# dll,如下所示的链接。

http://support.microsoft.com/kb/828736

应用程序在我的开发PC上运行良好,但当我试图在另一台PC上运行它时,它失败了。

使其工作的唯一方法是在该PC上重新编译c# dll并在该PC上再次运行Regasm命令以工作。

是否有一种方法来构建我的c# dll在这样一种方式,使我不必这样做每一次在每台PC上我的应用程序部署到?

在c++代码中使用c# dll而不使用Regasm

regasm做的是为你的c# dll生成一个COM包装器,然后将它注册为一个COM对象。

你不需要重新编译,一旦你有了一个dll,你可以使用regasm在目标PC上注册它。

调用c# dll的另一种主要方法是使用Microsoft的c++/CLI系统编写c++ .net程序。这基本上是一种使用c++的超集创建。net程序的方法(提示:它不是c++,这很遗憾,因为它取代了旧的托管扩展,对于这个任务来说更加透明)。因为它不是真正的c++,你最终得到的是。net二进制文件而不是c++二进制文件,所以要注意这一点。一方面,您可以编写一个c++/CLI包装器到c# dll,并从您的c++程序中调用它,这可能是在系统之间创建桥梁的首选方式。

我这样做了,它工作了,复制并粘贴代码到cmd

 %SystemRoot%'Microsoft.NET'Framework'v4.0.30319'regasm.exe MyAssembly.dll

请投票,如果它适合你。: D