|
|
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
Доброе время суток! Такая ситуция: нужно экспортировать структуру (или хотя бы переменную этой структуры) из DLL. Делаю так: Код: plaintext 1. 2. 3. а в .DEF файле так: Код: plaintext 1. И вот такие ошибки: Код: plaintext 1. 2. Пробовал в дефинишене писать пеерменную (MyStruct) - не помогло... Куда копать? З.Ы. Действие происходит в Вижуал Студио .НЕТ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 19:45 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
А если в DLL добавить функцию, которая вернет указатель на эту структуру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 19:56 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
В DLL свое объявление структуры. В твоей программе свое объявление структуры. Ты выделяешь в свой программе память под структуру, и вызываешь функцию из dll передавая ей указатель на свежевыделеную память. Функция из DLL заполняет структуру. Либо наоборот - читает. Но передаешь между программой и dll ты всегда только указатели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 20:11 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
ТОлег З.Ы. Действие происходит в Вижуал Студио .НЕТ В MS VC++ 6.0 линкуется, если убрать extern "C" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 20:32 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
В MS VC++ 6.0 линкуется конструкция в DLL Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. В программе Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 20:41 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
авторНо передаешь между программой и dll ты всегда только указатели. а что ещё можно передавать, кроме указателей? Т.к. какие параметры в "обычной жизни" нельзя передать в dll? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 10:03 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
Спасиба, Землекоп! Всё заработало но не понятно, почему не совсем так, как в мануалах к визуал студио... ИМХО, Борлянду, вот, мой респект. У них всё как-то правильнее всегда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 13:22 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
Petro123а что ещё можно передавать, кроме указателей? Т.к. какие параметры в "обычной жизни" нельзя передать в dll? Ты можешь передавать все что угодно, если это "что угодно" может быть положено на стек. Если значение переменой на стек положить нельзя - эту переменную в dll или из dll можно передавать только через указатели. Все почти точно так же как и с обычной функцией. Хотя в случае обычной функции компиляторы могут делать неявное конвертирование структур/массивов/объектов в указатели на них, и если в случае собственной функции это можно "не заметить, ну и фиг с ним" в случае внешних функций могут начаться проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 18:04 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
доп. вопрос - встречал передачу из dll как указателя на структуру , так и указателя на указатель на структуру . В чём может быть необходимость этого? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2005, 11:17 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
Petro123доп. вопрос - встречал передачу из dll как указателя на структуру , так и указателя на указатель на структуру . В чём может быть необходимость этого? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Передавая указатель на указатель, можно позволить вызываемой функции записать по этому указателю адресс своей структуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2005, 11:23 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
Lelikk Petro123доп. вопрос - встречал передачу из dll как указателя на структуру , так и указателя на указатель на структуру . В чём может быть необходимость этого? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! Передавая указатель на указатель, можно позволить вызываемой функции записать по этому указателю адресс своей структуры. например для ускорения перезаписи данных в структурах? Вместо изменения полей в "чужой" структуре мы подставляем свою????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2005, 11:30 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
Petro123 LelikkПередавая указатель на указатель, можно позволить вызываемой функции записать по этому указателю адресс своей структуры. например для ускорения перезаписи данных в структурах? Вместо изменения полей в "чужой" структуре мы подставляем свою????? Нет, не для ускорения. Просто в этом случае вызываемая функция (локальная или из dll) сама выделяет память, либо использует статичный кусок памяти. Так часто делают если библиотека сама занимается выделением/освобождением памяти под структуры либо работает с единственной копией статичных структур/массивов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 18:48 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
авторТак часто делают если библиотека сама занимается выделением/освобождением памяти под структуры либо работает с единственной копией статичных структур/массивов. не совсем понятно: - т.е. указатель на указатель не ускоряет. - т.е. если это не указатель на указатель то dll не сможет сама распределять и очищать память структур?. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 13:43 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
Petro123не совсем понятно: - т.е. указатель на указатель не ускоряет. А почему он должен ускорять? Тебе в любом случае нужно выделять память под массив раз, заполнять этот массив два. Ты можешь в прикладной программе выделить память, а потом позвать библиотечную функцию чтобы она запомнила. А можешь позвать библиотечную функцию которая выделит тебе память и заполнит ее данными, а потом отдаст тебе указатель на подготовленный массив. Работа то одинаковая в обоих случаях, просто выполняется в разных местах. Petro123- т.е. если это не указатель на указатель то dll не сможет сама распределять и очищать память структур?. Почему не может? Может запросто. Только не удобно будет :) Ну вот пример использования указателя на указатель: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 19:32 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
Ты экспортировал саму структуру, а не переменную типа этой структуры. Напиши так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 11:11 |
|
||
|
как експортировать struct из DLL?
|
|||
|---|---|---|---|
|
#18+
MasterZivТы экспортировал саму структуру, а не переменную типа этой структуры. Напиши так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. точку с запятой забыл поставить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 11:58 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33086263&tid=2033207]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 409ms |

| 0 / 0 |
