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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неуправляемый класс в MC++, ... 
:(
    Опции темы
Plamenk
Дата 18.10.2005, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем Привет!

У меня есть .ccp и .h файлы класса написанного на обычном С++. И мне надо сделать библиотеку на MC++ с классом оберткой для этого класса. Как это сделать ума не приложу! Пытался использовать класс как private переменную MC++ класса, но компилятор ругается.

Заранее Всем Большое СПАСИБО!
PM MAIL   Вверх
Exception
Дата 21.10.2005, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ну.. а почему не выходит? эксепшны? какие?
PM   Вверх
Budda
Дата 23.10.2005, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 27.9.2004
Где: Украина, Киев

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



Plamenk: сейчас воюю с аналогичной проблемой. Насколько я вник, тебе нужно сделать класс-обёртку, напр. CMyLayer. Обязательно сделать его public и gc. После этого, объяви в нём закрытый объект того типа (класса) (COld), который тебе нужно извлечь из старого проекта. И для каждой нужной функции из COld, которую ты хочешь использовать в C# пиши новую функцию в CMyLayer.

Т.е. допустим есть:
Код


class COld
{
priveate:
int a;
public:
int GetA();
}

public __gc class CMyLayer{
private:
COld m_old;
public:
int GetA(){m_old.GetA();};
}


Вроде так нужно делать. Если я не прав, поправьте, плиз, мне тоже будет полезно
PM WWW   Вверх
Plamenk
Дата 24.10.2005, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2 Budda

Именно так я и сделал, но компилятор вывел мне ошибки следующего типа:

Код

c:\documents and settings\alexy\мои документы\visual studio projects\searchengine\searchengine\SearchEngine.h(18): error C3633: cannot define 'm_Sacner' as a member of managed 'Searcher'
c:\documents and settings\alexy\мои документы\visual studio projects\searchengine\searchengine\SearchEngine.h(18): error C3633: cannot define 'm_Sacner' as a member of managed 'Searcher'
        because of the presence of copy constructor 'std::list<_Ty>::__ctor' on class 'std::list<_Ty>'
        with
        [
            _Ty=SIZE_T
        ]
        and
        [
            _Ty=SIZE_T
        ]
        and
        [
            _Ty=SIZE_T
        ]
        C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\list(308) : see declaration of 'std::list<_Ty>::__ctor'
        with
        [
            _Ty=SIZE_T
        ]
        and
        [
            _Ty=SIZE_T
        ]
c:\documents and settings\alexy\мои документы\visual studio projects\searchengine\searchengine\SearchEngine.h(18): error C3633: cannot define 'm_Sacner' as a member of managed 'Searcher'
        because of the presence of assignment operator 'std::list<_Ty>::operator`='' on class 'std::list<_Ty>'
        with
        [
            _Ty=SIZE_T
        ]
        and
        [
            _Ty=SIZE_T
        ]
        C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\list(368) : see declaration of 'std::list<_Ty>::operator`=''
        with
        [
            _Ty=SIZE_T
        ]
c:\documents and settings\alexy\мои документы\visual studio projects\searchengine\searchengine\SearchEngine.h(18): error C3633: cannot define 'm_Sacner' as a member of managed 'Searcher'
        because of the presence of destructor 'std::list<_Ty>::~list' on class 'std::list<_Ty>'
        with
        [
            _Ty=SIZE_T
        ]
        and
        [
            _Ty=SIZE_T
        ]
        and
        [
            _Ty=SIZE_T
        ]
        C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\list(363) : see declaration of 'std::list<_Ty>::~list'
        with
        [
            _Ty=SIZE_T
        ]
        and
        [
            _Ty=SIZE_T
        ]
c:\documents and settings\alexy\мои документы\visual studio projects\searchengine\searchengine\SearchEngine.h(18): error C3633: cannot define 'm_Sacner' as a member of managed 'Searcher'
        because of the presence of destructor 'CMemScaner::~CMemScaner' on class 'CMemScaner'
        c:\documents and settings\alexy\мои документы\visual studio projects\searchengine\searchengine\memscaner.h(25) : see declaration of 'CMemScaner::~CMemScaner'
        c:\documents and settings\alexy\мои документы\visual studio projects\searchengine\searchengine\memscaner.h(9) : see declaration of 'CMemScaner'

PM MAIL   Вверх
Plamenk
Дата 24.10.2005, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Такие ошибки выдаются, если у меня код следующего типа:

Код

public __gc class Searcher    {

    private:
        CScaner m_Sacner;

    public:
        Searcher(int ID):m_Sacner(ID)
        {}

    };


А если переписать вот так:


Код

public __gc class Searcher    {

    private:
        CScaner* m_Sacner;

    public:
        Searcher(int ID)
        {
            m_Sacner = new CScaner(ID);
        }
    };


То выдаются следующие ошибки:

Код

SearchEngine error LNK2020: unresolved token (0A000013) exception.__ctor
SearchEngine error LNK2020: unresolved token (0A00001C) ??_7type_info@@6B@
SearchEngine error LNK2020: unresolved token (0A000027) exception.__dtor
SearchEngine fatal error LNK1120: 3 unresolved externals


Это сообщение отредактировал(а) Plamenk - 24.10.2005, 09:44
PM MAIL   Вверх
Budda
Дата 24.10.2005, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 27.9.2004
Где: Украина, Киев

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



Думаю, что лучше юзать конструкцию второго типа.

"__ctor" и ".__dtor" - это конструктор и деструктор.

Судя по соощениям у тебя не реализованы конструктр и деструктор класса CScaner. Кроме того, когда я писал свой пост, забыл сказать, что нужно подключить доп. библиотеку MSVCRT.LIB - поищи её в папке, куда ставил .NET, скопируй в папку проекта и добавь в проект. В частности, эта библиотека содержит реализацию метода new для unmanaged классов. Без неё точно работать не будет.

Чего не хватает ещё - не знаю.
PM WWW   Вверх
Plamenk
Дата 24.10.2005, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2 Budda

Спасибо!

#pragma comment(lib, "MSVCRT") действительно решила проблему!

Но появляется следующий warning:

nochkclr.obj : warning LNK4099: PDB 'libc.pdb' was not found with 'C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\nochkclr.obj' or at 'c:\Documents and Settings\alexy\Мои документы\Visual Studio Projects\SearchEngine\Debug\libc.pdb'; linking object as if no debug info

Может быть, у меня какие-то настройки проекта надо изменить? smile
PM MAIL   Вверх
Budda
Дата 24.10.2005, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 27.9.2004
Где: Украина, Киев

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



Plamenk а у меня такое же ворнинг выскакивает. Я закрываю на него глаза, как я понимаю, он не критичен, хотя если кто-то подскажет, что такое libc.pdb и как его сделать , то скажу большое спасибо
PM WWW   Вверх
Exception
Дата 24.10.2005, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ну..pdb - файл для дебаггинга. в нём имена переменных и т.п. просто откомпиль этот libc.dll в режиме debug. если он с сорсами, конечно
PM   Вверх
Budda
Дата 26.10.2005, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 27.9.2004
Где: Украина, Киев

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



Run-time error, а где взять, этот libc.dll? Он что, в студии где-то лежит (я поискал - нигде нет)? И как его компилить?
PM WWW   Вверх
stab
Дата 26.10.2005, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Plamenk @ 24.10.2005, 15:36)
nochkclr.obj : warning LNK4099: PDB 'libc.pdb' was not found with 'C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\nochkclr.obj' or at 'c:\Documents and Settings\alexy\Мои документы\Visual Studio Projects\SearchEngine\Debug\libc.pdb'; linking object as if no debug info


If you see this warning regarding nochkclr.obj, you can safely ignore it. (с) MSDN


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


Эксперт
****


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

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



а я о чём? он на самом деле нужен тока прогерам мелких - для отладки
PM   Вверх
Plamenk
Дата 26.10.2005, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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