2014-10-10 2 views
0

У меня есть библиотека .NET, и я хочу, чтобы ее COM-код, чтобы вызвать его функции из C++. К счастью, эта библиотека является открытым исходным кодом, и если добавить COM-видимое право класса в этом проекте - это работает:Вставить родную DLL или сборку .NET в 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? –

+0

@ Dan, вопрос в том, как использовать функции скомпилированной сборки .NET в C++ через COM? – Nolesh

ответ

0

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

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

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

Начать с: Best Practice in Writing a COM-Visible Assembly (C#)

+0

Как уже упоминалось выше, мой вопрос заключается в том, как использовать функции скомпилированной сборки .NET в C++ через COM? – Nolesh

Смежные вопросы