С учетом следующего кода:
#pragma unmanaged
public struct PluginHeader { };
#pragma managed
using namespace System::Runtime::InteropServices;
[assembly:ComVisible(false)];
[ComVisible(true)]
public interface class
ILHMPluginLoader
{
bool LoadSensorPlugin (PluginHeader* pluginHeader);
};
tlbexp не сможет сделать ILHMPluginLoader
доступным через COM, потому что PluginHeader
не является общедоступным. Выдает следующее предупреждение:
TX801311B0 Предупреждение. На тип значения PluginHeader, не являющийся видимым COM, ссылаются либо на экспортируемый в данный момент тип, либо на один из его базовых типов.
Однако, если я сделаю видимым всю сборку assembly:ComVisible(true)
, все будет работать нормально. Я не могу явно пометить PluginHeader
ComVisible (true), поскольку он находится на неуправляемой стороне.
Как я могу сделать PluginHeader
COM видимым, не раскрывая всю сборку?