Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2008, 01:02   #1
madmax08
 
Регистрация: 15.07.2008
Сообщений: 6
По умолчанию Как пользоваться классами на С++

Здравствуйте подскажите как в проэкте C# использовать классы написанные на C++? Можно ли в одном Solution создать проэкты с# и С++ и как то соединить их что бы они могли пользоваться классами друг друга?
madmax08 вне форума Ответить с цитированием
Старый 15.07.2008, 06:51   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

"Классы С++" вы моэете скомпилировать в dll, а потом вызывать их с помощью DLLImport. Классы С# вы можете оформить отдельными файлами и подключать их, можете оформлять в тексте главной программы, а можете перенести в dll и подключить её как оснастку к своей программе. При этом С++ НЕ СМОЖЕТ использовать dll написанную на C#.
merax вне форума Ответить с цитированием
Старый 15.07.2008, 09:40   #3
madmax08
 
Регистрация: 15.07.2008
Сообщений: 6
По умолчанию

[QUOTE=merax;122552] Классы С# вы можете оформить отдельными файлами и подключать их, можете оформлять в тексте главной программы[QUOTE]

немогли бы вы подробнее рассказать как это сделать. например есть проэкт c++ с файлом code.cpp следующео содержания

Код:
int main()
{
return 0;
}
и есть класс c# в файле class1.cs следующео содержания

Код:
using System;

public class Class1
{
	public Class1()
	{
	}
}
как мне сделать так что бы в code.cpp можно было сделать так

Код:
int main()
{
Class1 a;
return 0;
}

moderator: Используйте тег <CODE>

Последний раз редактировалось merax; 15.07.2008 в 14:31.
madmax08 вне форума Ответить с цитированием
Старый 15.07.2008, 14:42   #4
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Никак. Такое не проканает и работать не будет.

Еще раз повторяю. На приведенном ниже листинге код импортируемой из dll функции написанной в Visual C++:


Код:
extern "C" __declspec(dllexport) void Foo();

extern "C" __declspec(dllexport) void Foo()
{
	MessageBox(NULL, "Hello World", "Hi", MB_OK);
}
Тогда вызов её из программы С# будет выглядеть вот так:

Определение:

Код:
[DllImport(@"Your_Application_Path\tester.dll", CharSet = CharSet.Auto)]
public static extern void Foo();
Вызов:

Код:
private void button1_Click(object sender, EventArgs e)
{
      Foo();
}

...

Последний раз редактировалось merax; 15.07.2008 в 14:45.
merax вне форума Ответить с цитированием
Старый 15.07.2008, 23:59   #5
madmax08
 
Регистрация: 15.07.2008
Сообщений: 6
По умолчанию

Спасибо понятно, я думал есть более легкий способ))
madmax08 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с классами и объектами Shavminator Общие вопросы Delphi 7 18.12.2009 04:11
Как пользоваться компонентом PrintDialog? Bill Gates Общие вопросы Delphi 1 30.12.2007 20:15