Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Октября 12, 2024, 09:11:56 am
Начало Помощь Поиск Войти Регистрация
Новости:

Просмотр сообщений

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Сорвачев Сергей

Pages: 1 2 3 [4]
46
TRANSAQ Connector / Re: Корректное завершение работы
« on: Января 14, 2014, 02:22:29 pm »
Следующей строчкой после SendCommand вы имеет следующую ситуацию. 2 потока. Основной поток стоит на позиции после SendMessage. Второй поток стоит в Callback от этой самой команды. UnInitialize проходит без ошибки. На FreeLibrary  появляется AccessViolation.

Добрый день, Михаил.
А можно поподробнее о Вашем проекте:
реализация у Вас на с++?
2 потока, о которых Вы пишете, это реализация Вашего проекта?
Можете привести примерный сценарий взаимодействия с библиотекой коннектора (с перечислением управляющих функций, т.е. Initialize, SendCommand(connect/disconnect), Load/FreeLibrary).

Необходимость остановки коннектора на уровне выгрузки библиотеки в процессе работы программы чем вызвана? Или указанная проблема возникает в момент завершения  Вашей программы?
Если есть возможность, можете написать небольшой тест библиотеки, который воспроизводит проблему у Вас и прислать его на support@transaq.ru?

47
Подсистема ATF / Re: Transaq Connector .h файл
« on: Апреля 19, 2012, 09:47:41 am »
А с какими фреймворками и программными инструментами Вы работаете?

48
Подсистема ATF / Re: Transaq Connector .h файл
« on: Апреля 16, 2012, 10:11:59 am »
Сигнатуры функций, экспортируемых библиотекой xmlconnector, приведены в документации.
Для работы с библиотекой необходимо использовать явную загрузку с помощью функции LoadLibrary.

49
TRANSAQ Connector / Re: транзак коннектор
« on: Марта 05, 2012, 01:05:45 pm »
Коллеги! Ищу минимальный проект по тестам функций коннектора на с++ builder! Не могу разобраться с xml структурами...Огромная просьба ... ПОМОГИТЕ!!!

Пример работы с коннектором на C++ (разрабатывался в MS Visual Studio 2005):
Code: [Select]
#include <windows.h>
#include <iostream>
#include <fstream>


#define TACCESS_API  __declspec(dllimport)
typedef bool (WINAPI *tcallback)(BYTE* pData);
typedef BYTE* (WINAPI *typeSendCommand)(BYTE* pData);
typedef bool (WINAPI  *typeFreeMemory)(BYTE* pData);
typedef bool (WINAPI *typeSetCallback)(tcallback pCallback);


std::ofstream xmlfile;
typeFreeMemory FreeMemory;


bool CALLBACK acceptor(BYTE *pData)
{
xmlfile<<pData<<std::endl;
FreeMemory(pData);
return true;
}

int main(int argc, char* argv[]) {

setlocale(LC_CTYPE, "");

std::cout<<"Statring!"<<std::endl;
xmlfile.open("test.xml");
xmlfile<<"<?xml version='1.0' encoding='UTF-8'?>";
xmlfile<<"<root>";

HMODULE hm = LoadLibrary("Debug\\txmlconnector.dll");
if (hm) {
typeSetCallback SetCallback =
reinterpret_cast<typeSetCallback>(GetProcAddress(hm, "SetCallback"));

FreeMemory =
reinterpret_cast<typeFreeMemory>(GetProcAddress(hm, "FreeMemory"));

SetCallback(acceptor);


typeSendCommand SendCommand =
reinterpret_cast<typeSendCommand>(GetProcAddress(hm,"SendCommand"));
if (!SendCommand) {
printf("\"SendCommand\" not found (0x%X)\n", GetLastError());
return -1;
}
else {
BYTE* ss = SendCommand(reinterpret_cast<BYTE*>(
"<command id='connect'>"
"<login>KOKS</login><password>koks</password>"
"<host>192.168.15.15</host><port>3901</port>"
"<logsdir>.\\LOGS\\</logsdir><loglevel>0</loglevel></command>"));
std::cout<<reinterpret_cast<const char*>(ss);
FreeMemory(ss);

Sleep(10000);

ss = SendCommand(reinterpret_cast<BYTE*>("<command id='subscribe'>"
"<alltrades><secid>304</secid></alltrades>"  //идентификаторы взял просто для примера
"<quotations><secid>304</secid></quotations>" //в реально кода надо ориентировать на то,
"<quotes><secid>304</secid></quotes>" //что присылвает сервер
"</command>"));
std::cout<<reinterpret_cast<const char*>(ss);
FreeMemory(ss);

Sleep(1000);

ss = SendCommand(reinterpret_cast<BYTE*>(
"<command id='disconnect'/>"));
std::cout<<reinterpret_cast<char*>(ss);
FreeMemory(ss);
}

try {
FreeLibrary(hm);
}
catch (...) {
std::cout<<"Fail in FreeLibrary";
}
}
int err = GetLastError();
xmlfile<<"</root>";

std::cout<<"\nEnded...\n";
char c;
std::cin>>c;
return 0;
}

Pages: 1 2 3 [4]


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0.10 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!