Внедрить нативную сборку dll или .NET в COM

У меня есть библиотека .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, язык которого отличается от английского. Возможно ли решить эту проблему?

0

Решение

Если ваша задача — вызывать библиотеку .NET из C ++ через COM, почему вы добавляете библиотеку .NET в качестве встроенного ресурса в какую-то новую библиотеку классов COM?

Просто сделайте существующую стороннюю сборку видимой для COM и вызывайте ее из C ++, VB6 и т. Д.

По всему Интернету есть несколько документов, как сделать сборку .NET видимой в COM. Насколько я помню, ни один из них не содержит рекомендаций по внедрению сборки .NET в сборку класса COM.

Начните с:
Лучшие практики в написании COM-Visible Assembly (C #)

0

Другие решения


По вопросам рекламы [email protected]