Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Правильно ли выбран прототип основной функции?
Каким образом управлять потоками ATTACH/DETACH?
Где почитать об этом и желательно бы с примерами?
Джеффри Рихтер "Windows для профессионалов"
Желаю всем здравствовать!
Тема заинтересовала и решил проверить обсуждаемую тему на простом примере, который идет вместе с терминалом(проект DLLSample).
После компиляции в VS 6.0, испеченная dll работает с терминалом успешно, но сама не выгружается!
А как вы узнали, что она не выгружается? У меня DLLSample замечательно отрабатывает.
А как вы узнали, что она не выгружается? У меня DLLSample замечательно отрабатывает.
По косвенному признаку - тело файла длл-ки не перезаписывается пока не закроешь терминал.
.
Правда, у меня на глобальном уровне пару статических массивов объявлены, возможно это влияет.
.
Вот и хотелось бы понять как правильно настроить проект, да "тщательно" прописать attach/detach как выразился
Джеффри Рихтер "Windows для профессионалов"
Спасибо, буду смотреть.
Желаю всем здравствовать!
Тема заинтересовала и решил проверить обсуждаемую тему на простом примере, который идет вместе с терминалом(проект DLLSample).
После компиляции в VS 6.0, испеченная dll работает с терминалом успешно, но сама не выгружается!
Вот основная функция:
А теперь вопрос к знатокам, которые действительно разбираются в том как устроена и работает dll под виндой и знают как её правильно скомпелить в проекте под VS 6.0(к примеру).
Правильно ли выбран прототип основной функции?
Каким образом управлять потоками ATTACH/DETACH?
Где почитать об этом и желательно бы с примерами?
Какой атач? Какой детач? Вы чё? Функция DllMain в обычной dll-ке вообще не нужна! Её линкер вставляет вместо Вас в dll-ку.
http://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx
/MD, /MT, /LD (Use Run-Time Library)
/LD
Creates a DLL.
Passes the /DLL option to the linker. The linker looks for, but does not require, a DllMain function. If you do not write a DllMain function, the linker inserts a DllMain function that returns TRUE.
Links the DLL startup code.
http://msdn.microsoft.com/en-us/library/ms682583(VS.85).aspx
По косвенному признаку - тело файла длл-ки не перезаписывается пока не закроешь терминал.
.
Правда, у меня на глобальном уровне пару статических массивов объявлены, возможно это влияет.
То есть, на самом деле у вас не DLLSample, как вы утверждали ранее? так.
Вот и хотелось бы понять как правильно настроить проект, да "тщательно" прописать attach/detach как выразился
То есть, на самом деле у вас не DLLSample, как вы утверждали ранее? так.
Ну, в общем да, если используете явно DllMain. А вообще, все настройки проекта нужно взять из сампла. Мегаквоты рекомендуют DllMain явно прописывать, хотя если писать на Дельфи - то там DllMain можно не прописывать, а все attach/detach занести в инициализацию и финализацию.
За исключением того что я добавил два статических массива на глобальном уровне, весь проект взят из DLLSample.
Вызываю примитивную функцию в советнике запущенном в тестере. При завершении тестирования DLL удерживается в памяти. Вот такая ситуация.
За исключением того что я добавил два статических массива на глобальном уровне, весь проект взят из DLLSample.
Вызываю примитивную функцию в советнике запущенном в тестере. При завершении тестирования DLL удерживается в памяти. Вот такая ситуация.
Аха, значит проблема в тестере возникает. И это не скрипт, и не индикатор, - это советник. Ну а как этот советник в нормальных условиях, не в тестере, себя ведёт?
Кстати, "два статических массива на глобальном уровне" по идее не должны ни как влиять на dll. Особенно если вы к ним из dll вообще не обращаетесь.
Прикольна. В моём сообщении часть текста пропала, на которое вы отвечали, хотя я её не удалял. Глючит форум.
Аха, значит проблема в тестере возникает. И это не скрипт, и не индикатор, - это советник. Ну а как этот советник в нормальных условиях, не в тестере, себя ведёт?
Собственно, все эти проблемы с dll год назад у меня также были, когда был советник-
проверял прогон моего тестера против системного.
Зато... кое-то успел всех по нескольку раз опустить по поводу кривых рук и ошибок в программе.
Не дай бог кому-то будет такой начальничек :-(.
P.S.: полинковал dll с runtime-библиотеками VC 2005: после индикатора и скрипта
все выгружается нормально.
Собственно, все эти проблемы с dll год назад у меня также были, когда был советник-
проверял прогон моего тестера против системного.
Зато... кое-то успел всех по нескольку раз опустить по поводу кривых рук и ошибок в программе.
Не дай бог кому-то будет такой начальничек :-(.
P.S.: полинковал dll с runtime-библиотеками VC 2005: после индикатора и скрипта
все выгружается нормально.
Ещё раз повторяю - у меня нет проблем с dll ни где. Если у вас проблемы - то это именно проблемы вашего программирования, ни MS ни MT тут скорее всего не виновато. А то что нужно использовать "старый" VC - так это и так должно быть понятно.