| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Неуправляемый класс в MC++ |
| Автор: Plamenk 18.10.2005, 16:32 |
| Всем Привет! У меня есть .ccp и .h файлы класса написанного на обычном С++. И мне надо сделать библиотеку на MC++ с классом оберткой для этого класса. Как это сделать ума не приложу! Пытался использовать класс как private переменную MC++ класса, но компилятор ругается. Заранее Всем Большое СПАСИБО! |
| Автор: Exception 21.10.2005, 17:54 |
| ну.. а почему не выходит? эксепшны? какие? |
| Автор: Budda 23.10.2005, 20:17 | ||
| Plamenk: сейчас воюю с аналогичной проблемой. Насколько я вник, тебе нужно сделать класс-обёртку, напр. CMyLayer. Обязательно сделать его public и gc. После этого, объяви в нём закрытый объект того типа (класса) (COld), который тебе нужно извлечь из старого проекта. И для каждой нужной функции из COld, которую ты хочешь использовать в C# пиши новую функцию в CMyLayer. Т.е. допустим есть:
Вроде так нужно делать. Если я не прав, поправьте, плиз, мне тоже будет полезно |
| Автор: Plamenk 24.10.2005, 07:56 | ||
| 2 Budda Именно так я и сделал, но компилятор вывел мне ошибки следующего типа:
|
| Автор: Plamenk 24.10.2005, 09:43 | ||||||
Такие ошибки выдаются, если у меня код следующего типа:
А если переписать вот так:
То выдаются следующие ошибки:
|
| Автор: Budda 24.10.2005, 10:25 |
| Думаю, что лучше юзать конструкцию второго типа. "__ctor" и ".__dtor" - это конструктор и деструктор. Судя по соощениям у тебя не реализованы конструктр и деструктор класса CScaner. Кроме того, когда я писал свой пост, забыл сказать, что нужно подключить доп. библиотеку MSVCRT.LIB - поищи её в папке, куда ставил .NET, скопируй в папку проекта и добавь в проект. В частности, эта библиотека содержит реализацию метода new для unmanaged классов. Без неё точно работать не будет. Чего не хватает ещё - не знаю. |
| Автор: Plamenk 24.10.2005, 11:36 |
| 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 Может быть, у меня какие-то настройки проекта надо изменить? |
| Автор: Budda 24.10.2005, 14:56 |
| Plamenk а у меня такое же ворнинг выскакивает. Я закрываю на него глаза, как я понимаю, он не критичен, хотя если кто-то подскажет, что такое libc.pdb и как его сделать , то скажу большое спасибо |
| Автор: Exception 24.10.2005, 16:10 |
| ну..pdb - файл для дебаггинга. в нём имена переменных и т.п. просто откомпиль этот libc.dll в режиме debug. если он с сорсами, конечно |
| Автор: Budda 26.10.2005, 00:07 |
| Run-time error, а где взять, этот libc.dll? Он что, в студии где-то лежит (я поискал - нигде нет)? И как его компилить? |
| Автор: stab 26.10.2005, 00:23 | ||
If you see this warning regarding nochkclr.obj, you can safely ignore it. (с) MSDN |
| Автор: Exception 26.10.2005, 07:04 |
| а я о чём? он на самом деле нужен тока прогерам мелких - для отладки |
| Автор: Plamenk 26.10.2005, 08:23 |
| Всем Спасибо! |