Я собираюсь предположить, что вы используете управляемый C ++ - что-нибудь еще, и есть большие проблемы, о которых нужно беспокоиться.
Похоже, вы получаете ссылки на ошибки вашего типа C #. Поэтому я не думаю, что проблема связана с какими-либо проблемами с Призмой. Чтобы управляемый компилятор C ++ связывался с вашей сборкой C #, вам необходимо создать сборку C # с файлом документации XML (см. Вкладку «Сборка» в ваших свойствах). Это включено в вашем проекте?
Я использовал следующее в качестве очень простого доказательства концепции, где TestObject определен в сборке C #, на которую ссылается DLL C ++. Это скомпилировано без каких-либо проблем.
Заголовочный файл:
void __clrcall CommandCallback(Project::Infrastructure::TestObject^ param);
public ref class ManagedModule : IModule
{
public:
ManagedModule();
virtual void __clrcall Initialize();
private:
};
Реализация:
ManagedDLL::ManagedModule::ManagedModule()
{
}
void __clrcall ManagedDLL::ManagedModule::Initialize()
{
Action<Project::Infrastructure::TestObject^>^ newAction =
gcnew Action<Project::Infrastructure::TestObject^>(&CommandCallback);
DelegateCommand<Project::Infrastructure::TestObject^>^ newCommand =
gcnew DelegateCommand<Project::Infrastructure::TestObject^>(newAction);
Project::Infrastructure::Commands::ApplicationExitCommand->RegisterCommand(newCommand);
return;
}
void __clrcall CommandCallback(Project::Infrastructure::TestObject^ param)
{
return;
}