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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> include native c++ headers, in CLR c++ projects 
:(
    Опции темы
Darked
Дата 21.5.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

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



       Всем доброго времени суток.

  Проясниет пожалуйста картину, кому не трудно. Как я понимаю, в CLR проектах уже не получится включить h-файлы nativ с++, которые содержат код на обычном С++? Типа такого:
Код

// The information written in a database 
class Object_Info {
public:
    Object_Info():
      numObject(NOT_DEFINED)
    , image(0)
    , templ(0)
    , skelet(0)
    , intT(0)
    , typeObject(emptyType)
    {
        fileName[0] = 0 ;
    }

[b]...[/b]

// Save obect to file
    int Save(DWORD cardID, string &objfile);
    // Load object from file
    int Load(LPCTSTR filename);

[b]...[/b]


   А как же тогда совмешать код? Все заголовки переписывать? 


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Exception
Дата 21.5.2006, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



В С# вообще такой код недопустим smile . А зачем тебе совмещать код? 
PM   Вверх
Darked
Дата 21.5.2006, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

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



    Да вот, переписать одну dll нужно на CLR C++, ну, естественно, куча типов и данных за ней в h-файлах тянется. Пока не нашел как без h-ок переписать ; ) Пытался делать так:
Код

#pragma unmanaged
#include ".\..\..\Include\BaseTPData.h"
#pragma managed


  Так начинают такие ошибки валиться:

>...\Microsoft Visual Studio 8\VC\include\vadefs.h(89) : error C3862: '__va_start': cannot compile an unmanaged function with /clr:pure or /clr:safe
1>        #pragma unmanaged is in effect
1>...\Microsoft Visual Studio 8\VC\include\vadefs.h(90) : error C3862: '__va_arg': cannot compile an unmanaged function with /clr:pure or /clr:safe
1>        #pragma unmanaged is in effect
1>...\Microsoft Visual Studio 8\VC\include\vadefs.h(91) : error C3862: '__va_end': cannot compile an unmanaged function with /clr:pure or /clr:safe
1>        #pragma unmanaged is in effect


  Без pragma же придирается к native объявлениям:
Код

// Save obect to file
    int Save(DWORD cardID, string &objfile);
...\include\afisobj.h(113) : error C2061: syntax error : identifier 'string'

inline void* WINAPI InterlockedExchangePointer(void** pp, void* pNew) throw()

...\Microsoft Visual Studio 8\VC\atlmfc\include\atlconv.h(90) : error C3641: 'InterlockedExchangePointer' : invalid calling convention '__stdcall ' for function compiled with /clr:pure or /clr:safe
 


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Exception
Дата 21.5.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



.NET не связан с С++. Поэтому я не вижу смысла переводить под него не-объектноориентированную библиотеку. А вообще, сделай сборку unsafe или пиши на С++/CLI. 
PM   Вверх
Darked
Дата 21.5.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

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



   В смысле unsafe сборку? Так же не понял насчет CLI/C++ ;( . Я токаначинаю с dot net разбираться.

    Библиотека, кстати, объектно-ориентированная должна получиться ;) . 


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Exception
Дата 21.5.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ты можешь объяснить, зачем тебе дотнет? Он вот к такой бяке:

Цитата(Darked @  21.5.2006,  21:24 Найти цитируемый пост)
inline void* WINAPI InterlockedExchangePointer(void** pp, void* pNew) throw()


вообще винтиться не должен. Лучше уж пиши с нуля - WinAPI в дотнете - плохой тон.
Цитата(Darked @  21.5.2006,  21:58 Найти цитируемый пост)
В смысле unsafe сборку?


В свойствах проекта поищи.


Цитата(Darked @  21.5.2006,  21:58 Найти цитируемый пост)
Также не понял насчет CLI/C++


Это язык, более близкий к C++, чем C#. Точнее, это и есть C++. 
PM   Вверх
arilou
Дата 22.5.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


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

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



Darked, тебе надо переписать под дотнет с минимальными затратами, или есть вариант переосмыслить и переписать? 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Darked
Дата 22.5.2006, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

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



arilou, мне нужно перенести смысл на dot net. Причем шеф сказал так, улыбаясь: "Заодно причеши код." Так что можно считать, что нужно осмыслить и написать тоже самое на dot net, но все равно некотоые старые наработки потянуться и туда, без этого никак. Пока по - другому не вижу. Тем более используются функции из нашего SDK, поэтому без h-ек никак.
[quote=Exception, 21.5.2006,  21:23, post738604]Ты можешь объяснить, зачем тебе дотнет? Он вот к такой бяке:

Цитата(Exception @  21.5.2006,  21:23 Найти цитируемый пост)
Ты можешь объяснить, зачем тебе дотнет? Он вот к такой бяке:

Цитата(Darked @  21.5.2006,  21:24 Найти цитируемый пост)
inline void* WINAPI InterlockedExchangePointer(void** pp, void* pNew) throw()


 До этого пока руки не дошли ; )

Цитата(Exception @  21.5.2006,  21:23 Найти цитируемый пост)
Это язык, более близкий к C++, чем C#. Точнее, это и есть C++.  

   Как я понимаю CLI никаког отношения к С++ не имеет, это просто инфраструктура. А если писать на .Net, то это и так получается CLR проект. 


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
arilou
Дата 23.5.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


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

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



Darked, ну тада в зависимости от объема работ. Переписывай на шарпе, а старые наработки можно вызывать из обычных DLL'ок через P/Invoke. 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Darked
Дата 23.5.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

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



Цитата(arilou @  23.5.2006,  10:20 Найти цитируемый пост)
Переписывай на шарпе, а старые наработки можно вызывать из обычных DLL'ок через P/Invoke.  

   Ну, шарп я не знаю, да и пожелания заказчика на С++. А объем работ не маленький... 


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

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


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

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


 




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


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

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