包装c++在c++ /CLI clr:安全的c# COM互操作

本文关键字:c++ 互操作 安全 COM clr CLI 包装 | 更新日期: 2023-09-27 18:03:02

是否有任何方法使包装器clr:安全的项目在c++非托管?

我的小故事就是这样开始的,
"天哪,你必须做一个‘c# COM互操作’项目,但这个项目必须使用一个‘c++库’,而且结果必须只有‘一个’(dll COM)。"
好了,经过几天的搜索,我意识到可以用两种方式使用c++库:添加资源并使用PInvoke调用或创建包装器c++/CLI。使用PInvoke,我不能只有一个dll(对吗?)。所以我选择了第二个选项"包装c++/CLI"。一开始似乎很容易,我重新编译了Visual Studio 2005到2010的库,创建了一个CLR项目(使用keypair)。SNK和重新签名)添加了库。作品!'0/现在我将使用ILMerge,哦,这是什么?只有clr:安全吗?为什么?好吧,我尝试重新编译c++/CLI到clr:safe,但出现错误…

我该如何解决这个问题?

包装c++在c++ /CLI clr:安全的c# COM互操作

ILMerge不是合适的工具。

相反,您将c#编译为一个。net模块,并将其与所有c++/CLI对象文件一起传递给c++/CLI链接器。