Используя C ++ - cli, как создать экземпляр формы WinForms, определенной в библиотеке C #? - PullRequest
1 голос
/ 20 февраля 2009

Извините, если на этот вопрос уже был дан ответ, но я не смог его найти.

Я пытаюсь открыть форму C #, когда вызывается функция в программе на C ++ (основная программа находится на C ++ - cli, форма на C #, это пустая форма, просто чтобы попробовать, как она работает). Я использую Visual Studio 2005, и у меня есть оба проекта в моем решении. Проект C # - это просто форма, и я настроил его как библиотеку классов. Однако, когда я перехожу к функции программы C ++, я набираю это в начале:

int _stdcall Init(void)
{
...
FormProject::Form1 form1;
form1 = new FormProject::Form1::Form1();
form1.something();
...
}

У меня мало опыта в C ++, я пробовал разные комбинации, но мне не повезло. Проект C ++ был сделан совместимым с CLI. Я уже включил необходимое:

#using <System.Windows.Forms.dll>
#using <System.dll>

Я знаю, что есть некоторые большие ошибки, но мне нужна только эта форма, не более. Большое спасибо.

Редактировать: я уже добавил ссылки.

Ответы [ 3 ]

3 голосов
/ 20 февраля 2009

Если я вас понимаю, я думаю, вам нужно создать экземпляр объекта C # с использованием улучшений синтаксиса C ++ / CLI. Например, код, который вы разместили, должен быть:

FormProject::Form1^ form1;
form1 = gcnew FormProject::Form1::Form1();  // or FormProject::Form1()
form1->something();

Я предлагаю вам создать новый проект WinForms в управляемом C ++ и просто посмотреть на сгенерированный код для правильного синтаксиса.

3 голосов
/ 20 февраля 2009

Проект C ++ / CLI должен добавить ссылку на проект C #, прежде чем вы сможете использовать типы в вашей библиотеке C #.

0 голосов
/ 20 февраля 2009

Вы добавили ссылку на FormProject в свой проект C ++? Если вы сделали это, включили ли вы оператор #using для пространства имен FormProject?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...