包装器C++;在C++/CLI clr:C#COM互操作安全 有没有办法使包装器CLR:对于C++中的非托管项目安全?

包装器C++;在C++/CLI clr:C#COM互操作安全 有没有办法使包装器CLR:对于C++中的非托管项目安全?,c#,c++,clr,wrapper,unmanaged,C#,C++,Clr,Wrapper,Unmanaged,我的小故事就是这样开始的, “孩子,你必须做一个项目‘C#COM互操作’,但这个项目必须使用‘C++库’,并且只能产生‘一’(dll COM)。” 好的,经过几天的搜索,我意识到有可能使用两种方式使用C++库:添加资源和用pJook调用或创建包装器C++/CLI。使用PInvoke,我不能只有一个dll(对吗?)。所以我选择了第二个选项“包装器C++/CLI”。一开始似乎很容易,我重新编译了库Visual Studio 2005到2010,创建了一个CLR项目(使用keypair.snk并重新签

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

我怎样才能解决这个问题


感谢advanced,

ILMerge不是用于此目的的合适工具


而是将C#编译为.netmodule,并将其与所有C++/CLI对象文件一起传递给C++/CLI链接器。

我不确定这些与COM有何关系。有三种互操作:P/Invoke;C++互操作(代号“它只是工作”);COM互操作。由于您没有告诉我们出现了什么错误,我们无法帮助修复它们。可能是@Ben Voigt的重复。错误类似于“错误C4956:'const wchar_t*”:此类型是不可验证的。。。在进一步搜索之后,我意识到不可能将非托管代码合并到托管代码。我试试这个。如果不可能,我将在dll中添加资源并使用P/Invoke。谢谢教授,我听不懂你的回答。我有em COM C#,这种用法(使用C++/CLI clr的C#lib不安全)。我想在单个dll中部署。thanks@Cabaia字体看,谢谢。我尝试过“将非托管DLL作为资源嵌入,如果您自己将其解压缩到一个临时目录中”,效果很好!但是我不能使用GetManifestResourceStream:(所以我使用了Properties.Resources.UnmanagedDLL。