| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Dll на VC++ и прога на Delphi |
| Автор: Ptica_Oz 14.3.2007, 13:16 | ||||
| есть длл на VC++. в правильности работы ф-ций я уверена (в виде ехе-ника они работали замечательно).подключаю ее к проге на делфи и прога запинаестя на winapi-ной ф-ции. код длл:
код проги на дефи:
вылетаю на первом вызове ф-ции DocumentProperties. обращалась к спецам по делфе на этом форуме. они посоветовали в длл передавать PChar, что собственно я и делаю. но результата это не дало. помогите разобраться... |
| Автор: _hunter 14.3.2007, 13:27 |
| во-первых: делфийского кода маловато. во-вторых: что мешает код отладить и найти ошибку? в-третьих: не в тот раздел вопрос... Добавлено @ 13:31 unicode, кстати, часом не продефайнен? |
| Автор: Ptica_Oz 14.3.2007, 13:37 |
а больше там ничего интересного нет. маленькая формачка с которой считываются значения переменных, как надо преобразуются, и вызывается та самая единственная и не повторимая ф-ция длл-ки как? если считаете нужным переместите |
| Автор: _hunter 14.3.2007, 13:52 |
т.е. переменные не инициализируются? открываем проект .dll-ки в студди; жмем F5; указываем путь к .exe-шнику |
| Автор: ama_kid 14.3.2007, 13:58 | ||
Это вам кажется, что ничего интересного нет. Мне, к примеру, было бы интересно посмотреть, как происходит загрузка библиотеки (статически или динамически), как происходит получение адреса функции (через GetProcAddress или дефинишеном напрямую), какие в итоге значения получаются и многое другое.... Обычным способом. Загрузить среду, где разрабатывалась Dll-ка, загрузить проект Dll и запустить его на отладку с указанием host-приложения, которое эту библиотеку будет подгружать (в данном случае - ваше приложение)... |
| Автор: Любитель 14.3.2007, 15:12 |
| Ptica_Oz, значения всех параметров какие? Откуда берутся? |
| Автор: Ptica_Oz 14.3.2007, 15:19 |
| Любитель, в делфях они берутся из формы и переводятся в тип PChar кроме одного, который имеет тип integer. в длл параметры типа char * и int. или я не про то говорю? |
| Автор: Ptica_Oz 14.3.2007, 15:38 | ||
при отладке говорит:
|
| Автор: Любитель 14.3.2007, 15:57 |
Кстати да. В студии анси или уникод? |
| Автор: _hunter 14.3.2007, 16:55 |
| это в какой момент говорит? в функцию попадаеш? |
| Автор: Ptica_Oz 15.3.2007, 06:53 |
говорит когда первый раз пытаюсь выполнить DocumentProperties (т.е. в ф-цию fetch_DEVMODE попадаю) в студии анси |
| Автор: dumb 15.3.2007, 07:41 | ||
| Ptica_Oz, так как падает на вызове, в который передается единственный("левый" хэндл обычно не приводит к падениям) параметр - имя, то, видимо, дело именно в уникодной сборке dll и твоих ловких приведениях типов -
если в проекте dll анси-строки, то это уже мистика какая-то... возможно, для прояснения ситуации тебе будет проще выложить exe+dll где-нибудь? |
| Автор: _hunter 15.3.2007, 11:54 |
| в чем проблема легко проверить: вместо "const_cast<TCHAR *>(pname)" пишем имя принтера и пробуем вызвать так. зачем, кстати, передавать TCHAR*, если приходит char*? зачем передавать const TCHAR*, если потом идет каст к TCHAR*? |
| Автор: Ptica_Oz 15.3.2007, 12:12 | ||
честно говоря этот вызов я взяла из чужого кода и сильно не разбиралась (работало в ехе и ладно), потом пробовала шаманить с "const_cast<TCHAR *>(pname)" ничего не получилось. просто писать имя не пробовала, но попытаюсь... сейчас решила пойти в обход: сделала вместо длл ехе и вызываю его с параметрами из делфей через CreateProcess. ща олаживаю, попозже напишу чем дело кончилось. |
| Автор: Ptica_Oz 19.3.2007, 13:11 |
| итог таков: пришлось перелопатить все ф-ции для получения списка форматов принтера (в контексте этой проблемы я пользовалась win api DocumentProperties), отладила ехе (нашлось ещё несколько глюков с автоматизацией) и вызвала его из делфей. после того как отладила ехе конечно пробовала снова сделать длл, но результата это не дало |
| Автор: Любитель 21.3.2007, 15:17 |
| Может выложишь код? Проще будет мне кажется. |
| Автор: Ptica_Oz 23.3.2007, 11:45 |
а где это лучше сделать и как? |
| Автор: _hunter 23.3.2007, 11:56 |
| да хоть на rapidshare.de... |
| Автор: Ptica_Oz 26.3.2007, 14:42 |
| эх, я бы с радостью выложила, хочется ведь узнать в чем дело, да начальство не рекомендует |