Вопросы по DLL

 

Дабы не путать mql4 и dll я завёл отдельную ветку для обсуждения некоторых вопросов.

1. Во-первых, меня удивил тот момент, что для написания dll нет чёткого языка, т.е. синтаксиса. То на С++, то на Delphi пишут.. это я уже встречал.

2. Дальше вот из оф. документации фрагмент:

 модификатор __declspec(dllexport) в объявлениях методов разрешает экспорт метода библиотекой DLL для использования его другими приложениями

 Получается если нет этого модификатора, то метод не сможет использоваться другими приложения " вне библиотеки " ?

Но есть же и  модификатор __declspec(dllimport). Судя по всему и по документации он обеспечивает возможность импорта функций из вне в dll? Но часто бывает так, что нужен как импорт, так и экспорт. А модификатор по ходу может быть и метода только 1, верно? Тогда в чём тут смысл?

 
hoz:

Дабы не путать mql4 и dll я завёл отдельную ветку для обсуждения некоторых вопросов.

1. Во-первых, меня удивил тот момент, что для написания dll нет чёткого языка, т.е. синтаксиса. То на С++, то на Delphi пишут.. это я уже встречал.

2. Дальше вот из оф. документации фрагмент:

 Получается если нет этого модификатора, то метод не сможет использоваться другими приложения " вне библиотеки " ?

Но есть же и  модификатор __declspec(dllimport). Судя по всему и по документации он обеспечивает возможность импорта функций из вне в dll? Но часто бывает так, что нужен как импорт, так и экспорт. А модификатор по ходу может быть и метода только 1, верно? Тогда в чём тут смысл?

1. Разве есть разница на каком языке писать? Язык это только средство-инструмент.

2. Возьмите пример из папки МТ4 и повторите его. Вопросы сами потом отпадут с накоплением опыта. Пока не надо так заморачиваться. Когда надо, то и MSDN почитаете. 

 

Все ребята , хватит. Я сношу топик пока не разразилась общая драка.

2 топикстартер. Вам надо понять что мир, и программирование в частности  вы не можете загнать в рамки вами же и созданные.

"Все просто, но не так." (с)

 
FAQ:

Все ребята , хватит. Я сношу топик пока не разразилась общая драка.

2 топикстартер. Вам надо понять что мир, и программирование в частности  вы не можете загнать в рамки вами же и созданные.

"Все просто, но не так." (с)


 И всё-таки. Я так понял, тут не тока С++, а как-то идёт взаимодействие с " внешним миром ". Что посоветуете почитать по теме?

 Поймите правильно, мне не лень изучать, но знать бы за что ухватиться.. Открыл я тот пример, и сразу наткнулся на то, что есть не понятные моменты. 

 

Даже не знаю что вам сказать, начните с азов, википедия и все такое. Принципы работы окон и так далее. 

Наблюдая за вашим развитием на этом форуме, я заметил одну вещь - вы слишком углубляетесь в детали не видя, или не понимая всей картины в целом. Отойдите, отвлекитесь от деталей, попытайтесь построить картинку в голове. И когда вы это сделаете все станет на свои места. 

 
FAQ:

Даже не знаю что вам сказать, начните с азов, википедия и все такое. Принципы работы окон и так далее. 

Наблюдая за вашим развитием на этом форуме, я заметил одну вещь - вы слишком углубляетесь в детали не видя, или не понимая всей картины в целом. Отойдите, отвлекитесь от деталей, попытайтесь построить картинку в голове. И когда вы это сделаете все станет на свои места. 

в точку!
 
Берете, почти любой компилируемый в исполняемый код Windows, язык и пишете dll. Там не сложно.
 

По тиху въезжаю.. 

Появилось пару вопросов:

1. Поясните, пожалуйста, используются ли на данный момент статические библиотеки? Зачем они вообще нужны? Ведь есть динамические и статические.

2. Вот кусок кода с хедера проекта, который входит в состав стандартного набора мт4: 

#ifndef NOIME
#include <imm.h>
#endif
#endif /* WINVER >= 0x0400 */
#endif

 Почему идёт 3 в подряд #endif один за одним? Ведь структура должна быть в таком случает опираясь на документацию и логику такая:

#ifdef имя_макроса
последовательность операторов
#endif

            или

#ifndef имя_макроса
последовательность операторов
#endif

  А, в этом случает, #endif 3 в подряд. Почему?

 
hoz:

По тиху въезжаю.. 

Появилось пару вопросов:

1. Поясните, пожалуйста, используются ли на данный момент статические библиотеки? Зачем они вообще нужны? Ведь есть динамические и статические.

2. Вот кусок кода с хедера проекта, который входит в состав стандартного набора мт4: 

 Почему идёт 3 в подряд #endif один за одним? Ведь структура должна быть в таком случает опираясь на документацию и логику такая:

  А, в этом случает, #endif 3 в подряд. Почему?

Они не статические и не динамические, они - просто библиотеки. 

Dynamic Link Library(DLL) - библиотека динамического вызова(загрузки). 

Просто, способ распределения памяти.  

 
tara:

Они не статические и не динамические, они - просто библиотеки. 

Dynamic Link Library(DLL) - библиотека динамического вызова(загрузки). 

Просто, способ распределения памяти.  


Я это и имел ввиду. По сути, все библиотеки, которые нужно вызвать раз и чтоб она находилась в памяти постоянно,  для того и используются библиотеки динамического вызова что-ли? Грубо говоря, это как в mql4 функция inite() ?

А если уже нужно вызывать какие-то функции много раз и не нужно, чтоб они находились в памяти постоянно, тогда используются динамические? Я верно понимаю?