Я программирую на VC ++ 2010. У меня есть проект консольного приложения clr и проект приложения win clr в решении. Я хочу отправить некоторые данные из консольного приложения в форму пользовательского интерфейса для отображения в сетке. Затем я написал метод в классе MyForm и попытался использовать его в проекте консольного приложения. но когда я пытаюсь включить MyForm.h в proj консольного приложения, я получаю сообщение об ошибке «Переопределение типа класса», хотя в моем коде есть «#pragma Once» и #ifdef.
Файл MyForm.h из Project1 решения:
#ifndef MYFORM_H
#define MYFORM_H
#pragma once
namespace Project1 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
}
void AddVal(UInt16 i)
{
dataGridView1->Rows[0]->Cells[2]->Value = i;
}
protected:
~MyForm()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::DataGridView^ dataGridView1;
private: System::Windows::Forms::DataGridViewComboBoxColumn^ Column1;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column2;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column3;
protected:
private:
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
...
#pragma endregion
};
ref class ManagedGlobals {
public:
static MyForm ^ p_mf = nullptr;
};
#endif
----------------------------
Файл source.cpp из Project1 решения:
#include "MyForm.h" // The header file of the form
using namespace Project1; // The name of the namespace in
int main(){
MyForm ^ mf = gcnew MyForm;
ManagedGlobals::p_mf = mf;
mf->ShowDialog(); // Show the form
return 0;
}
----------------------------
Файл ConsoleApplication.cpp из проекта ConsoleApplication решения
#include "stdafx.h"#include "..\project1\MyForm.h"
using namespace System;
int main(array<System::String ^> ^args)
{
...
ManagedGlobals::p_mf->AddVal(777);
...
}
Задача ещё не решена.
Других решений пока нет …