Автор: MJIbIu 2.7.2010, 14:29
По работе пришел новый приборчик к нему две .dll написано на Java и C#.
все бы ничего тока вот наш проект написан на Qt.
Возник вопрос как прикрутить dll к проекту написанному на Qt.
гуглил ничего толком не нашел
Автор: Litkevich Yuriy 2.7.2010, 16:25
Цитата(MJIbIu @ 2.7.2010, 18:29)
Возник вопрос как прикрутить dll к проекту написанному на Qt.
также как и прикручиваются другие dll. только не забыть таскать со своим проектом среды выполнения для Сишарп и Явы (.Net Framework и JRE, соответсвенно)
Автор: DIMEDROLL 6.7.2010, 8:06
ищи по ключевому слову dllimport
Автор: MoPDoBoPoT 6.7.2010, 11:21
Вот ссылка в помощь: http:////http://www.progz.ru/forum/index.php?showforum=89
Автор: MJIbIu 7.7.2010, 10:17
Цитата(Litkevich Yuriy @ 2.7.2010, 17:25)
Цитата(MJIbIu @ 2.7.2010, 18:29)
Возник вопрос как прикрутить 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
как я понимаю в dll'ках всё должно быть одинаково, имена функций и т.п.
открой эту dll'ку в Dependency Wallker, посмотри как там выглядят имена
Автор: DIMEDROLL 7.7.2010, 12:08
MJIbIu,
http://forum.codenet.ru/showthread.php?t=47913 говорится:
Цитата
Давайте все таки определимся, чего вы хотите?
Импортировать библиотеку native-кода, написанную на C, или создать собственную библиотеку на C#, чтобы использовать ее функционал в unmanaged-коде?
Первое называется PInvoke и элементарно реализуется, второе - невозможно без инициирования CLR в unmanaged-процессе, исключение лишь составляют COM-объекты (для них ОС сама разворачивает CLR).
тоесть это невозможно
upd: разве что использовать COM
еще набрел на http://blog.undsoft.com/programming/export-managed-to-unmanaged/
но тут автор скорее всего перепутал С++ с С++ CLI(или как там его, тот что managed C++), еще почитаю статью...
upd: дочитал, автор утверждает что это unmanaged С++(Blitz в оригинальной статье)
по идее должно работать
попробуй сделать как там написано и отпишись получилось ли
исходный код лучше брать с англ. варианта статьи
Автор: MJIbIu 7.7.2010, 13:52
Цитата(Litkevich Yuriy @ 7.7.2010, 12:57)
как я понимаю в dll'ках всё должно быть одинаково, имена функций и т.п.
открой эту dll'ку в Dependency Wallker, посмотри как там выглядят имена
что то странное
нету ни экспортируемых и импортируемых функций
Автор: Litkevich Yuriy 7.7.2010, 14:15
никогда с таким не сталкивался
Автор: MJIbIu 7.7.2010, 14:20
Цитата(DIMEDROLL @ 7.7.2010, 13:08)
еще набрел на http://blog.undsoft.com/programming/export-managed-to-unmanaged/
тоже читал отверг его с начало теперь по возился с ним разобрал в IL изменил а собрать обратно не смог =)
Автор: DIMEDROLL 7.7.2010, 14:30
Цитата(MJIbIu @ 7.7.2010, 14:20)
что то странное
нету ни экспортируемых и импортируемых функций
тоже читал отверг его с начало теперь по возился с ним разобрал в IL изменил а собрать обратно не смог =)
да нет тут ничего странного, C# создает не обычные DLL, а те которые можно использовать из управляемого(managed) кода... погуглив, быстро найдешь
у тебя две дороги, либо разобраться как IL компилить либо разобраться как делать через COM обьекты, причем второе - более правильно
Автор: MJIbIu 8.7.2010, 15:16
Почесал репу дед и сказал не майтесь ребята
Мб как то и можно прикрутить C# dll к Qt но времени и усилий того не стоит.
Решили просто использовать mono. У нас проект и так клиент - сервер так, что еще один клиент будет где то висеть и гнать данные и пущай что он не на Qt
Автор: Гость 17.10.2010, 21:52
Скорми скомпиленную дллку рефлектору ...и сохрани как с++ код.