Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Трабл использования dll на delphi в BuilderC++
|
|||
|---|---|---|---|
|
#18+
Создал DLL модуль на Delphi (AnsiString xxx()) и пытаюсь юзать ее на BuilderC++. Прописываю следующее в C++: 1. В заголовке - typedef AnsiString (*Func)(); 2. В объявлении класса - HINSTANCE mhDll и Func mpFunc; 3. В ф-ии создания формы - mhDll = LoadLibrary("name.dll"), потом mpFunc = (Func)GetProcAddress(mhDll, "xxx"); Потом вызываю данную функцию - mpFunc(); и здесь собственно ошибка вышибает типа - "Invalid pointer operation". В чем собсна дело? Спасибо! P.S. Dll лежит в папке проекта! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2003, 12:01 |
|
||
|
Трабл использования dll на delphi в BuilderC++
|
|||
|---|---|---|---|
|
#18+
А ты проверял что вернула GetProcAddress?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2003, 12:42 |
|
||
|
Трабл использования dll на delphi в BuilderC++
|
|||
|---|---|---|---|
|
#18+
Проблема в том что Паскаль и Си в разные стороны раскручивают стэки. Надо помутить с pascall или stdcall. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2003, 13:06 |
|
||
|
Трабл использования dll на delphi в BuilderC++
|
|||
|---|---|---|---|
|
#18+
У него функция без аргументов... Какая разница в какую сторону раскручивать стек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2003, 13:08 |
|
||
|
Трабл использования dll на delphi в BuilderC++
|
|||
|---|---|---|---|
|
#18+
функция вызывается нормальна, даже нормальна вызывается подряд несколко фунций String str = xxx(); str = xxx(); str = xxx(); str = xxx(); а вот после последней вырубается эта ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2003, 13:21 |
|
||
|
Трабл использования dll на delphi в BuilderC++
|
|||
|---|---|---|---|
|
#18+
Да то что без аргументов я чет не посмотрел :) Я сразу подумал на это типа частая ошибка :) А значение то возвращается? Всетаки посмотри на счет stdcall у функции в dll. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2003, 13:33 |
|
||
|
Трабл использования dll на delphi в BuilderC++
|
|||
|---|---|---|---|
|
#18+
После последней? То есть после последнего оператора? При уничтожении str? Наверно проблема со счетчиком AnsiString - то ли кучи разные у них, то ли еще что-то... Попробуй скажи str.Unique после первого вызова - что будет? Вообще нехорошая вещь передавать такие типы между приложениями, скомпилированными под разными средами. А вдруг это другой тип будет (Или есть уже) в следующей версии Builder, а DLL ты забудешь перекомпилить? Попробуй передавать в функцию PCHAR на массив, который объявляешь в Exe. Это точно будет работать. Правда тогда размер данных ограничен будет переданным массивом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2003, 13:54 |
|
||
|
Трабл использования dll на delphi в BuilderC++
|
|||
|---|---|---|---|
|
#18+
String str = xxx(); str = xxx(); str = xxx(); str = xxx(); попробуй через String *str; str= new String; *str = xxx(); должно работать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2003, 13:55 |
|
||
|
Трабл использования dll на delphi в BuilderC++
|
|||
|---|---|---|---|
|
#18+
о спасибо Оракул, все заработало, а в чем дело было, почему не работало до этого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2003, 14:49 |
|
||
|
Трабл использования dll на delphi в BuilderC++
|
|||
|---|---|---|---|
|
#18+
Я делал dll для Delphi на BCB и использовала для передачи связку *char и PChar - работала. Всмысле в dll на BCB был *char а в делфи давал ему PChar. Наоборот соответственно тоже должно железно работать. Мне кажется проблема в том что в Delphi var Str : AnsiString - указатель на AnsiString, а в C указатель на AnsiString соответственно со *. Хотя может и не так. Вообще че-то где-то читал про String параметры в dll На BCB мол там как то криво они могут обрабатываться... Хотя тут не параметры, но я бы все равно подстраховался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2003, 11:44 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2115420]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
| others: | 260ms |
| total: | 416ms |

| 0 / 0 |
