В своем последнем вопросе я спросил о запуске формы C # в программе C ++ - cli. У меня это работает, но у меня проблемы. Я постараюсь быть краток.
Моя C ++ программа должна выполнить форму C # и выполнить в ней несколько простых функций (увеличить счетчики и показать их). Однако я не знаю лучший способ сделать это. У меня есть форма, инициализированная в функции инициализации:
C ++ - кли
SUTAdapter::Form1^ *ptForm1; // Global variable
...
FormProject::Form1^ form1;
form1 = gcnew FormProject::Form1();
ptForm1 = &form1;
(*ptForm1)->Show();
(*ptForm1)->incCounter(0);
Некоторые другие функции в программе на C ++ просто вызывают incCounter. Моя проблема в том, что второй вызов другой функции в incCounter делает мой C # Form1 нулевым (this == null), поэтому я могу использовать код функции incCounter, но не переменные класса. Странно, как будто программа избавилась от FormProject.
C #
public void incCounter(int counter)
{
int param1 = counter;
this.count[counter]++; // this == null in sucessive calls from c++ program
}
Что я делаю не так? Я на самом деле отключил форму и просто использовал функцию и переменные на случай, если проблема с пользовательским интерфейсом (вызывать и так). Выход из функции инициализации C ++ (первый кусок кода) очищает Form1?