Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: C# dll и Qt
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
MJIbIu
По работе пришел новый приборчик к нему две .dll написано на Java и C#.
все бы ничего тока вот наш проект написан на Qt.
Возник вопрос как прикрутить dll к проекту написанному на Qt.
гуглил ничего толком не нашел
Litkevich Yuriy
Цитата(MJIbIu @ 2.7.2010, 18:29) *
Возник вопрос как прикрутить dll к проекту написанному на Qt.
также как и прикручиваются другие dll. только не забыть таскать со своим проектом среды выполнения для Сишарп и Явы (.Net Framework и JRE, соответсвенно)
DIMEDROLL
ищи по ключевому слову dllimport
MoPDoBoPoT
Вот ссылка в помощь: Написание и использование DLL в различных средах
MJIbIu
Цитата(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
как я понимаю в dll'ках всё должно быть одинаково, имена функций и т.п.
открой эту dll'ку в Dependency Wallker, посмотри как там выглядят имена
DIMEDROLL
MJIbIu,
тут говорится:
Цитата
Давайте все таки определимся, чего вы хотите?
Импортировать библиотеку native-кода, написанную на C, или создать собственную библиотеку на C#, чтобы использовать ее функционал в unmanaged-коде?
Первое называется PInvoke и элементарно реализуется, второе - невозможно без инициирования CLR в unmanaged-процессе, исключение лишь составляют COM-объекты (для них ОС сама разворачивает CLR).

тоесть это невозможно
upd: разве что использовать COM

еще набрел на статью
но тут автор скорее всего перепутал С++ с С++ CLI(или как там его, тот что managed C++), еще почитаю статью...
upd: дочитал, автор утверждает что это unmanaged С++(Blitz в оригинальной статье)
по идее должно работать
попробуй сделать как там написано и отпишись получилось ли
исходный код лучше брать с англ. варианта статьи
MJIbIu
Цитата(Litkevich Yuriy @ 7.7.2010, 12:57) *
как я понимаю в dll'ках всё должно быть одинаково, имена функций и т.п.
открой эту dll'ку в Dependency Wallker, посмотри как там выглядят имена

что то странное :blink:
нету ни экспортируемых и импортируемых функций
Litkevich Yuriy
никогда с таким не сталкивался
MJIbIu
Цитата(DIMEDROLL @ 7.7.2010, 13:08) *
еще набрел на статью

тоже читал отверг его с начало теперь по возился с ним разобрал в IL изменил а собрать обратно не смог =)
DIMEDROLL
Цитата(MJIbIu @ 7.7.2010, 14:20) *
что то странное :blink:
нету ни экспортируемых и импортируемых функций

тоже читал отверг его с начало теперь по возился с ним разобрал в IL изменил а собрать обратно не смог =)

да нет тут ничего странного, C# создает не обычные DLL, а те которые можно использовать из управляемого(managed) кода... погуглив, быстро найдешь

у тебя две дороги, либо разобраться как IL компилить либо разобраться как делать через COM обьекты, причем второе - более правильно
MJIbIu
Почесал репу дед и сказал не майтесь ребята
Мб как то и можно прикрутить C# dll к Qt но времени и усилий того не стоит.
Решили просто использовать mono. У нас проект и так клиент - сервер так, что еще один клиент будет где то висеть и гнать данные и пущай что он не на Qt
Гость
Скорми скомпиленную дллку рефлектору ...и сохрани как с++ код.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.