c# - C++/CLI clr :safe for C# COM Interop 中的包装器 C++

标签 c# c++ clr wrapper unmanaged

有什么方法可以为 C++ 非托管项目制作包装器 clr:safe 吗?

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

我该如何解决这个问题?

提前致谢

最佳答案

ILMerge 不是执行此操作的合适工具。

相反,您将 C# 编译为 .net 模块,并将其与所有 C++/CLI 目标文件一起传递给 C++/CLI 链接器。

关于c# - C++/CLI clr :safe for C# COM Interop 中的包装器 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6769240/

相关文章:

c# - 覆盖非派生 c# 类中的函数

c++ - 绘制边框时出现错误参数错误

c++ - 尝试从 Visual Studios C++ 中的加密字符串输出解密字符串时出现逻辑错误

javascript - 无法使用 Ajax 填充 DropDownList

c# - 以编程方式关闭 Excel 中的工作簿

c# - Mono 是用什么语言编写的?如何阅读源代码?

c# - SQL 用户定义的聚合值保留顺序?

c# - C# 中的浅复制现实生活用法?

c# - mysql 整个数据库到 json 使用 c# 没有 datagridview

c++重载和覆盖operator +