Название: Создание DLL Отправлено: Resager от Январь 16, 2010, 21:00 Хочю написать DLL-ку для работы с XML файлами.
Сталкиваюсь с такими проблемами: 1) Имена функций неизвестны (поглядел в totalCMD -> F3, вроде бы она такая "_ZN8Reslib64C1Eii" и "_ZN8Reslib64C2Eii", хотя она одна у меня, но всё равно вызвать не получается) 2) Хотел проверить, вызывается ли вообще функция из библиотечки, вставил мэсичбокс, но вылетает ошибка no matching function for call to `QMessageBox::information(Reslib64* const, const char[10], const char[2])' Код такой: .cpp Код: #include "reslib64.h" .h Код: #ifndef RESLIB64_H Вобщем не знаю... в QT совсем недавно... и библиотеку первый раз пишу.... как избавиться и как проверить работоспособность вообще? Название: Re: Создание DLL Отправлено: Resager от Январь 16, 2010, 21:07 пробовал и <QMessageBox> не рабило, пробовал поставить QMessageBox::information(this,(QString)"Результат", (QString)"g");, тож самое выдаёт (ставил, потому что советовали).
Библиотеку создаю в qt creator'е -> Создать библиотеку С++ -> Shared... Вооот, заработало.... (месачбоксы убрал), привызове функции из левого скрипта. вот так: (не ругайтесь, просто этот скрипт портативен, потому его юзаю) retvar := DllCall("reslib64.dll\_ZN8Reslib6410resagerlibEi", Int, 4) Выдало нормально, правда имя функции в коде другое (как задать своё?) вот код: Код: #include "reslib64.h" В коде "resagerlib" а в DLL "_ZN8Reslib6410resagerlibEi" :( Название: Re: Создание DLL Отправлено: Авварон от Январь 16, 2010, 22:48 не понял вопроса... как поменять имя ф-ии в длл? насколько я знаю, никак - есть определенный формат именования символов
Название: Re: Создание DLL Отправлено: Dendy от Январь 16, 2010, 23:20 Какую имено вы себе ставите задачу? Вынести в DLL функционал для работы с XML для своих программ или создать DLL, которой можно будет пользоваться в произвольных программах? Если первое - читайте про Qt Plugin System.
Название: Re: Создание DLL Отправлено: Resager от Январь 17, 2010, 12:50 Для своих нужд, в своих программах хочю использовать.
Второе. как я понимаю более широкое значение имеет и более сложную постановку? В идеале конечно было бы неплохо чтобы все проги могли использовать. Но первым делам: да, хочю вынести функционал для работы с хмл и использовать в своих прогах. На счёт имени функции: я бы хотел вызывать вызывать функции с таким же именем, как и у меня в коде.... ну например в "opengl32.dll" функция "glBegin" а не как у меня, в коде resagerlib, а в DLL приходится использовать "_ZN8Reslib6410resagerlibEi" Название: Re: Создание DLL Отправлено: Dendy от Январь 17, 2010, 13:29 Использовать Qt Plugin. И да: http://www.rusedu.info/Article1031.html
Название: Re: Создание DLL Отправлено: crossly от Январь 17, 2010, 14:49 Код: а в DLL приходится использовать "_ZN8Reslib6410resagerlibEi" Название: Re: Создание DLL Отправлено: SASA от Январь 18, 2010, 11:25 Код: а в DLL приходится использовать "_ZN8Reslib6410resagerlibEi" Название: Re: Создание DLL Отправлено: Resager от Январь 18, 2010, 16:27 Библиотека будет использоваться другими программами, на другом языке.
Название: Re: Создание DLL Отправлено: SASA от Январь 18, 2010, 18:38 Читаем http://www.prog.org.ru/topic_8259_0.html (http://www.prog.org.ru/topic_8259_0.html), пробуем, задаём вопросы.
Название: Re: Создание DLL Отправлено: crossly от Январь 18, 2010, 19:56 Библиотека будет использоваться другими программами, на другом языке. тогда не понятно зачем Qt .... ведь твоя длл потянет за собой Qt-шные.... мот лучше сразу на целевом.... Название: Re: Создание DLL Отправлено: Dendy от Январь 18, 2010, 20:35 тогда не понятно зачем Qt Мне, например, очень даже понятно. Здравая идея. Автору я бы порекомендовал интерфейсы строить на C, используя собственные хендлы для обращения к данным. К примеру как обращаются к текстурам в OpenGL. |