0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 14
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Создать управляемую библиотеку, чтобы использовать ее в будущем в других .NET проектах18.07.2014, 17:49. Показов 1839. Ответов 15
Метки нет Все метки)
(
Здравствуйте. Имеется заголовочный h.-файл с C++ кодом, реализующий решение систем нелинейных уравнений
В нем есть объявление функций и их реализация: Объявление:
Возник вопрос как правильно сделать аналогично объявление и реализацию в managed dll конструкции выше. Не понятно, как обращаться с generic типом
0
|
18.07.2014, 17:49 | |
18.07.2014, 17:49 | |
Ответы с готовыми решениями:
15
Как создать UserControl и использовать его в качестве шаблона в других проектах Как создать dll-библиотеку, чтобы другие могли ее использовать? Как правильно использовать свой обновляемый проект в других своих проектах |
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|
19.07.2014, 03:12 | 2 |
1
|
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 14
|
|
19.07.2014, 04:08 [ТС] | 3 |
Спасибо, но это не вариант. Уже пробовал это делать, и на Vb.net и на C#. Не вышло.
А можно как-нибудь заменить шаблон функции template на указатель? Как-то через typedef реализовать?
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||||||||||||
19.07.2014, 05:02 | 5 | |||||||||||||||
Что бы избавиться от template, объявите указатель на функцию
т.е. это вариант использования нативной длл Добавлено через 45 минут собираете обычную длл. все функции и указатель на функцию объявляете в хэдере, реализацию функций в СРР файле. ref class уберите совсем Так вам именно управляемую сборку? Завтра захотите в других проектах, без NET и опять переписывать?
1
|
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 14
|
|
19.07.2014, 08:38 [ТС] | 6 |
Спасибо за ответ, да именно управляемую библиотеку. Для других проектов, могу пользоваться библиотекой в заголовочнике из которого собственно собираю managed dll.
Добавлено через 2 часа 21 минуту Только, что прочел что шаблоны и указатели C++/CLI при подключении к проектам .NET съедаются метаданные из-за несовместимости этих типов. Придется делать именно как посоветовали вы нативную длл-ку и пушить в нее данные из C#. опыта такого у меня нет совсем, поэтому если возникнут вопросы я еще немножечко у вас спрошу, можно?
0
|
![]() 2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
21.07.2014, 15:32 | 7 |
Вообще, C# поддерживает шаблоны.
http://msdn.microsoft.com/en-u... ad0zb.aspx
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|
21.07.2014, 19:45 | 8 |
CheshireCat, там ни к чему генерики. Если на С# переписывать, то там один тип делегата на всю
библиотеку.
0
|
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 14
|
|
31.07.2014, 09:00 [ТС] | 9 |
Доброго времени суток, я собрал unmanaged dll по вашим рекомендациям и проверил ее работоспособность, подключив к консольному приложению на чистом C++.
А вот, вызывать функции из dll из проекта на VB.Net все еще не получается. Кажется, функция считывается и пытается выполнятся но возникает ошибка как-то связанная с границами массивов, наверное есть какое-то несоответствие массивов си и бейсика. Пожалуйста, будьте добры взгляните на проекты: Dynamic Lybrary (2 решения: MathFuncsDll - дллка, MyExecRefsDll - вызов функции дллки на С++) и testdll in vb (вызов функции дллки на Vb.net)
0
|
Модератор
![]() 3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
|
|
31.07.2014, 10:56 | 10 |
функции неверно принимают массивы. вот тут все написано (MSDN HOWTO: Pass Arrays Between Visual Basic and C Q207931) http://support.microsoft.com/kb/207931
1
|
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 14
|
|
31.07.2014, 13:59 [ТС] | 11 |
Спасибо, похоже Вы правы, насколько я понял из статьи массивы в .NET другого типа (safearray) нежели в С++, и для организации взаимодействия нужно, как-то научить воспринимать этот тип safearray неуправляемым кодом, либо конвертировать в управляемом коде тип safearray в Сишный указатель.
Для первого случая, кажется годится 1 или 2 метод (не уверен какой выгодней) в указанной Вами статье, для второго случая наверное можно использовать средства класса Marshal(по-моему это гораздо проще, но что-то не нашел хорошего понятного для новичка примера). Буду пробовать оба подхода, ну и надеюсь на ваши советы и предложения.
0
|
Модератор
![]() 3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
|
|
31.07.2014, 15:25 | 12 |
1 метод, как я понял, это и есть передача указателя в C-стиле
2 метод, это когда мы принимаем настоящий safearray наверное, 1 метод лучше ибо зачем нам мучиться?
1
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||
31.07.2014, 15:41 | 13 | |||||
Прошелся отладчиком , все массивы возвращаются из длл длинной равной единице.
Жестко размер укажите в параметрах, должно помочь.
1
|
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 14
|
|
31.07.2014, 19:05 [ТС] | 14 |
Ошибка исчезла, но почему-то в массиве с решением xSys1(0..3) одни нули.
Добавлено через 13 минут Хотя, вру ошибка не исчезла : A first chance exception of type 'System.IndexOutOfRangeException' occurred in testdll in vb.exe A first chance exception of type 'System.AccessViolationException' occurred in testdll in vb.exe
0
|
Модератор
![]() 3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
|
|
31.07.2014, 20:56 | 15 |
а где выкидывает?
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||
01.08.2014, 12:59 | 16 | |||||
![]() РешениеНе по теме: утром на свежую голову вспомнил про In, Out
1
|
01.08.2014, 12:59 | |
01.08.2014, 12:59 | |
Помогаю со студенческими работами здесь
16
Как использовать библиотеку JSON .NET Как подключить и использовать библиотеку extjs в asp.net mvc 4 Какую библиотеку использовать, чтобы найти значение уравнения
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
|
Создаем REST API в Laravel с аутентификацией через Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
|
Пайплайны в Laravel - полный гайд
bytestream 18.02.2025
Разработка современных веб-приложений часто требует обработки сложных процессов, состоящих из множества последовательных шагов. Например, при создании системы комментариев может потребоваться. . .
|
Как правильно использовать @required в Symfony
bytestream 18.02.2025
При разработке приложений на Symfony мы часто сталкиваемся с необходимостью внедрения зависимостей. Фреймворк предоставляет несколько способов управления этим процессом, и одним из таких инструментов. . .
|
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
|
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
|
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
|
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
|
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
|
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
|