![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| FelikZ |
|
|||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
Собственно возможно ли пренести существующий C++(не .NET!) класс который экспортируется из длл, в C# проект?
Например такой:
Если нет, то почему и как это можно обойти. Спасибо! Это сообщение отредактировал(а) FelikZ - 27.2.2007, 21:19 -------------------- ![]() |
|||
|
||||
| Dray |
|
|||
![]() Материалист ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 7.10.2003 Где: г. Всеволожск Репутация: нет Всего: 6 |
FelikZ, Лучше всего обернуть класс в COM
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Проще всего выставить наружу функции через _dllexport / [DllImport], и юзать их передавая указатель на объект через IntPtr.
-------------------- ![]() |
|||
|
||||
| FelikZ |
|
|||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
Попробую почитать про COM спасибо Всмысле описать под каждый метод класса, функцию, которой передавать указатель на объект этого класса и она будет вызывать методы? -------------------- ![]() |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Всмысле выставить наружу (из длл) функции, которые будут принимать на входе параметры и указатель на объект этого класса. Естессно, где-то нужно будет создать этот объект - одна из функций будет это делать. У меня так работает C#-обёртка над Adobe XMP SDK, где вовсю используются C++ объекты. -------------------- ![]() |
|||
|
||||
| FelikZ |
|
|||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
Спасибо за помощь!
-------------------- ![]() |
|||
|
||||
| FelikZ |
|
||||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
Столкнулся с проблемой :(
Что-то не так со строками в C# проекте(см. ниже): вот код C++ функии в Dll:
Вот код в C#, собственно здесь и проблема:
Добавлено @ 14:09 Сорри забыл уточнить! Дело в том, что код который отмечен как не работающий, создает рядом с DLL файл с названием "АБРАКАДАБРА"(образно), а рабочий создает "D:\лялялятополя.vf"! -------------------- ![]() |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
UTF8 - это юникод.
-------------------- ![]() |
|||
|
||||
| FelikZ |
|
|||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
ОК, тогда что делает эта строка такого, что все начинает работать? -------------------- ![]() |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Может, TCHAR в твоей длл воспринимает UTF8, а не UTF16 (тогда конверсия имеет смысл) ?
-------------------- ![]() |
|||
|
||||
| FelikZ |
|
|||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
в DLL:
winnt.h
Настройки(в релизе тоже самое): Скрин (незнаю как по другому отобразить картинку Там в Release и Debug стоит "Use Unicode"... Что же не так? Я так понимаю проблема в DLL? как сделать wchar_t UTF-16? -------------------- ![]() |
|||
|
||||
| Stepan_Lameroff |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 16.12.2006 Репутация: 9 Всего: 14 |
Подобные проблемы с wchar_t* (а еще были с wchar_t**
может и в Вашем случае заработает |
|||
|
||||
| FelikZ |
|
|||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
Stepan_Lameroff, сработает
Что-то типа (пишу от руки, может и не откомпилица
Но я считаю что это не человечно, как то.... Есть другие варианты? (напр. изменить как-то в проекте кодировку...) -------------------- ![]() |
|||
|
||||
| FelikZ |
|
||||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
Свершилось!
заменить:
на:
И все тут ) ЗЫ. с утра лучше думается -------------------- ![]() |
||||
|
|||||
| FelikZ |
|
||||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
Снова я :(
В длл:
прога:
Что я делаю не так... -------------------- ![]() |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |