Этот форум переведен в режим чтения, просим обсуждать вопросы на форумах MQL4.community и MQL5.community

Вопрос про DLL


К списку тем  | 1 2
avatar
38
raxbat 23.10.2007 14:14 
Подсоединил DLL к эксперту. С путями всё ок. При вызове финкции из DLL ошибка:

2007.10.23 13:08:14 Expert LD EURUSD,H1: cannot call function 'ConnectSQL' from dll 'MSSQLprj.dll' (error 127)

#import "MSSQLprj.dll"
string ConnectSQL(string sServer, string sDB);
bool DisconnectSQL();
void ExecuteSQL(string sDatiSQL);

#import
...
int start()
{
.......
ConnectSQL("IT_LD_BIG", "fx");

.....


?
avatar
4464
Slawa 24.10.2007 14:23 
В Вашей dll нет функции ConnectSQL. Ошибка 127 об этом и говорит "The specified procedure could not be found."

Возможно, имя "испорчено". Заведите в Вашем проекте def-файл и перечислите в нём экспортируемые функции
avatar
16
Daniil 24.10.2007 23:47 
raxbat, Каким компилятором пользуетесь? Приведите объявление функции 'ConnectSQL'

avatar
31
Laser 16.01.2008 15:50 
У меня тоже вопрос по DLL
А может и более общий, пока не ясно.

Кодом библиотеки cоздаю МТС в виде объекта c методами, полями. Обычный объект, в общем, глобально видимый и с глобальным временем жизни. Создается он как классический Синглтон ( Singleton ).

Создавал МТС именно по этому шаблону проектирования, понадеявшись на то, что с приходом нового тика и вызовом любой функции из библиотеки, смогу обновить- поднастроить ранее созданный в оперативной памяти объект. Но вся неприятность в том, что с новым тиким объект приходистся создавать заново, т.е синглтон не находя себя ранее созданного и настроенного, создает свеженький, нулевой вариант.

Как сделать, чтобы настройки объектов не затирались? Есть ли способ сделать это без сохранения состояния объекта в файл по завершении его настройки в соответствии с пришедшим тиком и загрузки ранее сделанных настроек по приходящему тику?


avatar
12
pxx 20.01.2008 21:27 
Скорее всего, ошибка в коде.
Должно работать без проблем.
avatar
37
Valio 21.01.2008 00:47 
для начала просто почитать книжку по Си, и осмыслить содеянное .. мест масса,

можно здесь к примеру: http://cylib.iit.nau.edu.ua/Books/Prog/C++/VisualC++/beginers/visual/12.html
avatar
31
Laser 23.01.2008 13:10 
для начала просто почитать книжку по Си, и осмыслить содеянное .. мест масса,

можно здесь к примеру: http://cylib.iit.nau.edu.ua/Books/Prog/C++/VisualC++/beginers/visual/12.html


Спасибо за книгу. Она мне даже понравилась поначалу.
Может быть поясните пару непонятых в ней моментов?

Меня заинтересовала возможность объявленные переменных общими для нескольких процессов.
При компиляции строки предложенного там решения
#pragma comment(lib,"msvcrt" "-SECTION:.myseg,rws");
выдается ошибка.


avatar
31
Laser 23.01.2008 13:26 
Скорее всего, ошибка в коде.
Должно работать без проблем.

Меня смущает один момент при отладке библиотеки: в функции dllMain постоянно происходит
DLL_THREAD_ATTACH DLL_THREAD_DETACH.
avatar
37
Valio 25.01.2008 15:13 

В зависимости от постановки задачи есть множество путей хранения общ. переменных,
к примеру простецкий и христоматийный CreateFileMapping/Map-UnmapViewOfFile .. можно и через
разделяемую память (уже где-то обсуждалось на форуме), можно через каналы, если это просто
синхронизация между процессами, то использование семафоров, можно глобально распредлить
volatile-переменные, так и блоки памяти, если известны id окон, можно и просто сообщениями.
avatar
31
Laser 31.01.2008 14:50 

В зависимости от постановки задачи есть множество путей хранения общ. переменных,
к примеру простецкий и христоматийный CreateFileMapping/Map-UnmapViewOfFile .. можно и через
разделяемую память (уже где-то обсуждалось на форуме), можно через каналы, если это просто
синхронизация между процессами, то использование семафоров, можно глобально распредлить
volatile-переменные, так и блоки памяти, если известны id окон, можно и просто сообщениями.


Когда есть много окон, процессов и всего прочего..
Но ведь у меня до предела простой случай.
Окно инструмента одно, к нему прикреплен соеетник- один, к нему dll- ка - одна в ней функция- одна)))))
та функция вызывает указатель на синглтон-объект. Ну а что дальше.. именно с этого я и начинал.

Все что написано безусловно полезно и нужно и каналы с семафорами в том числе, но я немного почитав про это делаю вывод что проблема в другом, но в чем, остается непонятным.
avatar
37
Valio 10.02.2008 17:48 

Меня заинтересовала возможность объявленные переменных общими для нескольких процессов.


Мне кажется автор не четко понимает что и для чего он хочет.
Есть способы решения, а есть инструменты для, что я и предложил.
К списку тем   | 1 2  
Скачай MetaTrader 5 (300 Кб, веб-установщик) — новый терминал для финансовых рынков