| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > сбой после обращения к DLL |
| Автор: antur 14.11.2006, 16:42 |
| Здравствуйте. Такая проблема: Вызывается функция из подключаемой DLL, она возвращает AnsiString. Так вот после возвращения программа аварийно завершается. В чем тут дело?! |
| Автор: pandrew 14.11.2006, 16:48 | ||
2. ошибка при вызове требуется детали: как описано в хедере, как вызываешь, где взял информацию (или это твои догадки) |
| Автор: Fazil6 14.11.2006, 17:04 | ||
это сделано? А вообще лучше не использовать в параметрах и результатах классы и структуры. Возвращай лучше char* |
| Автор: Romikgy 14.11.2006, 17:45 |
тогда мож подойдет указатель на стринг передавать |
| Автор: antur 15.11.2006, 10:35 |
| Про нотацию насчет BORLNDMM.DLL я и забыл Кстати, а тогда просто внутри DLL можно оперировать с AnsiString или тоже не хорошо. Яимею ввиду внутри использовать AnsiString, ну а возвращать потом AnsiString.c_str() |
| Автор: Romikgy 15.11.2006, 10:42 |
| Автор: Fazil6 15.11.2006, 13:52 | ||||||
так нельзя
так можно
|
| Автор: antur 15.11.2006, 15:47 |
| Тогда снова непонятно... я возвращаю s.c_str(). Заметил, что работает нестабильно (то есь иногда все ОК, а иногда возвращает мусор, хотя внутри dll перед выходом проверяю массив символов и все в поряде). Вопросы насчсет второго варианта (что так можно): 1. то есть я в кач-ве параметра передаю массив char *, куда и запишется результат.... но... 2. как я буду знать каким передавать параметр buf_size и что это за функция strnspy (не могу найти)?! |
| Автор: Fazil6 15.11.2006, 16:02 | ||||
в том-то идело, что после выхода твой стринг удаляется, а ты используешь его буфер
ну выделяй под buf память с запасом. Ты ведь примерно знаешь, что тебе вернуть должны и оценить можешь какая должна быть длина. С колько выделил, столько и указал размер в buf_size. Функция во втором варианте, например возвращает реальную длину, которую хотела вернуть и можешь проверить все ли влезло в буфер. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcecrt/htm/_wcecrt_strncpy_wcsncpy.asp |
| Автор: antur 15.11.2006, 16:33 |
| Спасибо за ценные указания)) Все теперь работает! |