在一个程序集中从本机调用C#

在一个程序集中从本机调用C#,c#,c++,native,unmanaged,managed,C#,C++,Native,Unmanaged,Managed,我有以下问题: 我有原生C代码as.api,它需要通过一些函数定义进行扩展,以适应我们的功能。我可以用C代码修改它,在VS解决方案中编译它,很好用 现在我想从上面提到的C代码中调用C代码。因此,我做到了: [带扩展的本机C]-->[管理的C++]-->[C#] 这也行 问题:如何减少程序集的数量? 到目前为止,我发现: 使用CLR选项编译本机C,由于本机代码崩溃,无法工作 合并管理C++和C语言与ILIGHT(作为后构建操作) 原因: 出于安全原因,我们希望加密尽可能多的部分。因此最好是一个

我有以下问题:

我有原生C代码as.api,它需要通过一些函数定义进行扩展,以适应我们的功能。我可以用C代码修改它,在VS解决方案中编译它,很好用

现在我想从上面提到的C代码中调用C代码。因此,我做到了:

[带扩展的本机C]-->[管理的C++]-->[C#]

这也行

问题:如何减少程序集的数量?

到目前为止,我发现:

  • 使用CLR选项编译本机C,由于本机代码崩溃,无法工作
  • 合并管理C++和C语言与ILIGHT(作为后构建操作)
原因:
出于安全原因,我们希望加密尽可能多的部分。因此最好是一个.exe。

不幸的是,您无法将本机程序集与CLR程序集打包。但是,您可以:

  • 使用ILMerge将所有纯CLR程序集合并为一个程序集 静态地将所有本地程序集(C、C++和托管C++)链接到单个DLL中。

因此,您只有两个文件,一个是本机代码,一个是纯托管代码。您可能可以使用嵌入式资源(请参阅或)将本机程序集嵌入托管程序集。

,这仅适用于
C++
。这如何保护您呢?我们可以使用第三方工具加密程序集,但在文件大小和启动时间方面成本非常高。因此,目标是尽可能少的程序集进行加密。。。哪一个是:-)