将本机 dll 或 .NET 程序集嵌入到 COM 中

问题描述 投票:0回答:1

我有一个 .NET 库,我想通过 COM 包装它以从 C++ 调用它的函数。幸运的是,这个库是开源的,如果我在这个项目中添加 COM 可见的类 - 它可以工作:

[Guid("38F752CC-20F1-4729-B1E3-EE0AAD145052")]
public interface IQRCodeUI
{
    string GetDecodedString(string encodedString);
}

[Guid("D4CFCDFA-6718-494D-A23F-EBC0F9550377")]
public class QRCodeUI : IQRCodeUI
{
    public string GetDecodedString(string encodedString)
    {
        return decoder.decode(encodedString);
    }
}

decoder
就是这个图书馆的一门课程。

但是如果我要编译汇编该怎么办?我尝试创建类库(COM)并将.NET 库作为嵌入式资源添加到其中。没有结果!在编译过程中,它说类似

cannot register assembly "path\name". Cannot load file or assembly "nameOfAssembly" or its dependency. Cannot find the file.
抱歉,我无法提供错误的原文,因为我有 MSVS,其语言与英语不同。这个问题有可能解决吗?

c# c++ .net com .net-assembly
1个回答
0
投票

如果您的任务是通过 COM 从 C++ 调用 .NET 库,为什么要将 .NET 库作为嵌入式资源添加到某些新的 COM 类库中?

只需使现有的第三方程序集 COM 可见并从 C++、VB6 等调用它即可。

互联网上有很多关于如何使 .NET 程序集 COM 可见的文档。据我记得,其中没有一个包含将 .NET 程序集嵌入 COM 类程序集的建议。

从以下开始: 编写 COM 可见程序集的最佳实践 (C#)

© www.soinside.com 2019 - 2024. All rights reserved.