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