Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экспорт класса из DLL на VC++6.0, и его использование в .NET 
:(
    Опции темы
neutrino
Дата 23.12.2003, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Приветствую!

Не говоря уже о том, что я ни разу не экпортировал классы из DLL в VC++6.0, то и говорить нечего о том как их втыкать в программу, написанную под C#.NET. Объясните мне пожалуйста (или покажите на простом примере) как импортировать класс из библиотеки написанной в VC++6.0 в среду .NET и его использовать (e.g. вызвать конструктор - достаточно).

Спасибо.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
AntonSaburov
Дата 23.12.2003, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 118



Цитата
Не говоря уже о том, что я ни разу не экпортировал классы из DLL в VC++6.0,


Если подразумевается, что надо использовать COM-объекты, то можно посмотреть прямо в "Находках" по ключу "как в VC++.net работатьс EXEL"

Если не так понял вопрос - надо подробности.
PM MAIL WWW ICQ   Вверх
neutrino
Дата 24.12.2003, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Нет, что ты, никаких COM-объектов. Элементарный класс с набором методов. Просто как это чисто технически реализовать?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Гость_dim
Дата 24.12.2003, 22:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Просто так такой класс не вызовешь. Для этого нужно писать враппер, например на Managed C++, класс который будет являтся managed классом и подгружать твой VC6 класс.
  Вверх
AntonSaburov
Дата 25.12.2003, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 118



RTFM - MSDN "Platform Invoke Examples"

Код

using System;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
   public class Win32
   {
       [DllImport("user32.dll", CharSet=CharSet.Auto)]
           public static extern int MessageBox(int hWnd, String text,
               String caption, uint type);
   }

   class Class1
   {
       [STAThread]
       static void Main(string[] args)
       {
           Win32.MessageBox(0, "Hello World", "Platform Invoke Sample", 0);
       }
   }
}

PM MAIL WWW ICQ   Вверх
neutrino
Дата 1.1.2004, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Однако это импорт функции. А как с классом проделать тоже самое?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
stab
Дата 1.1.2004, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



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

http://forum.vingrad.ru/index.php?act=ST&f=2&t=13274
http://forum.vingrad.ru/index.php?act=ST&f=2&t=15002

метод, правда, хакерский...


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
dim
Дата 2.1.2004, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 24.12.2002

Репутация: нет
Всего: нет



Если есть header файл(ы) и библиотека импорта все будет намного проще.
--------------------
that's all
PM MAIL   Вверх
neutrino
Дата 4.1.2004, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Если эти хедеры написанны на С++, а мне надо в С# то как они помогут?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
dim
Дата 5.1.2004, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 24.12.2002

Репутация: нет
Всего: нет



Очень просто - пишется на managed C++ managed класс который является простой оберткой для твоего реального класса. Сборку с managed классом ты уже сможешь подключать в C# и использовать свой оберточный класс как .NET класс.
--------------------
that's all
PM MAIL   Вверх
neutrino
Дата 5.1.2004, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Вы наверное не обратили внимание, что я написал в начале темы: "...я ни разу не экпортировал классы из DLL в VC++6.0..." И как пользоваться классами из библиотек я тоже не знаю. В книгах дома ничего не нашел.

А оборточные классы на управляемом С++ я умею делать. Проблема именно в импорте класса из библиотеки.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
neutrino
Дата 5.1.2004, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Cully Спасибо. Я лучше введу ясность. А то у вас из-за меня голова заболит.

Мне нужно просто (как я понимаю) объявить интерфейс класса из библиотеки для программы. И указать, что он находится в такой-то библиотеке. Как это чисто технически реализовать?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
dim
Дата 5.1.2004, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 24.12.2002

Репутация: нет
Всего: нет



Дело в том, что исходный класс надо указать как експортируемый. Это можно сделать таким образом:
class __declspec( dllexport ) SomeClass
{
...
};
Далее - подключить библиотеку импорта этой длл-ки в тот проект где будет использаться класс.
--------------------
that's all
PM MAIL   Вверх
neutrino
Дата 8.1.2004, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Я экспортирую класс. Как импортировать? Как интерфейс объявить для внешней программы?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
stab
Дата 9.1.2004, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



neutrino, опиши, плиз, подробно какими файлами ты располагаешь или, если это не военная тайна, пришли по мылу, вместе раберемся.

cully(sobaka, mlin)ngs.ru


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0823 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.