C# dll и Qt |
Здравствуйте, гость ( Вход | Регистрация )
C# dll и Qt |
MJIbIu |
2.7.2010, 14:29
Сообщение
#1
|
Студент Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: 0 |
По работе пришел новый приборчик к нему две .dll написано на Java и C#.
все бы ничего тока вот наш проект написан на Qt. Возник вопрос как прикрутить dll к проекту написанному на Qt. гуглил ничего толком не нашел |
|
|
Litkevich Yuriy |
2.7.2010, 16:25
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
DIMEDROLL |
6.7.2010, 8:06
Сообщение
#3
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
ищи по ключевому слову dllimport
|
|
|
MoPDoBoPoT |
6.7.2010, 11:21
Сообщение
#4
|
Участник Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: 9 |
Вот ссылка в помощь: Написание и использование DLL в различных средах
|
|
|
MJIbIu |
7.7.2010, 10:17
Сообщение
#5
|
Студент Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: 0 |
Возник вопрос как прикрутить dll к проекту написанному на Qt. также как и прикручиваются другие dll. только не забыть таскать со своим проектом среды выполнения для Сишарп и Явы (.Net Framework и JRE, соответсвенно)CODE QLibrary lib("D:\\MyPro\\MercuryAPI.dll"); if(!lib.load()) { qDebug() << "\n Library is not loaded \n"; return false; } else qDebug() << "\n Library is loaded \n"; все пучком подключается. Дальше я так понял надо делать lib.resolve() а как я не знаю. http://forum.sources.ru/index.php?showtopic=150368&hl= - мне не совсем подходит т.к. dll написано на C#. Переписывать ее в С++ себе дороже хоть и есть исходники. Написание и использование DLL в различных средах - интересно но опять рядом но не то |
|
|
Litkevich Yuriy |
7.7.2010, 11:57
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
как я понимаю в dll'ках всё должно быть одинаково, имена функций и т.п.
открой эту dll'ку в Dependency Wallker, посмотри как там выглядят имена |
|
|
DIMEDROLL |
7.7.2010, 12:08
Сообщение
#7
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
MJIbIu,
тут говорится: Цитата Давайте все таки определимся, чего вы хотите? Импортировать библиотеку native-кода, написанную на C, или создать собственную библиотеку на C#, чтобы использовать ее функционал в unmanaged-коде? Первое называется PInvoke и элементарно реализуется, второе - невозможно без инициирования CLR в unmanaged-процессе, исключение лишь составляют COM-объекты (для них ОС сама разворачивает CLR). тоесть это невозможно upd: разве что использовать COM еще набрел на статью но тут автор скорее всего перепутал С++ с С++ CLI(или как там его, тот что managed C++), еще почитаю статью... upd: дочитал, автор утверждает что это unmanaged С++(Blitz в оригинальной статье) по идее должно работать попробуй сделать как там написано и отпишись получилось ли исходный код лучше брать с англ. варианта статьи Сообщение отредактировал DIMEDROLL - 7.7.2010, 12:41 |
|
|
MJIbIu |
7.7.2010, 13:52
Сообщение
#8
|
Студент Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: 0 |
|
|
|
Litkevich Yuriy |
7.7.2010, 14:15
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
никогда с таким не сталкивался
|
|
|
MJIbIu |
7.7.2010, 14:20
Сообщение
#10
|
Студент Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: 0 |
еще набрел на статью тоже читал отверг его с начало теперь по возился с ним разобрал в IL изменил а собрать обратно не смог =) |
|
|
Текстовая версия | Сейчас: 22.11.2024, 22:16 |