Избранное трейдера _sg_
Не далее как вчера опубликовал топик "Смена x86 Quik 7.27.2.1 на x64 Quik 8.4.1.6. Пляски вокруг DLL", где кратко рассказывалось как перекомпилировать проект С++ с платформы х86 на х64. Надеюсь, что у вас все уже получилось или получится.
Но я «крутой» программист, и, естественно, у меня вначале вообще ничего и никак не получалось. А так как проект большой, да еще и непонятно в чем дело, а своими экспериментами я могу вообще все испортить, то решил сделать маленькую простенькую DLL LuaProba.dll, на ней отработать переход на х64, и потом перенести это в большой проект.
Привожу код С++ DLL целиком:
// LuaProba.cpp: определяет экспортированные функции для приложения DLL.
//
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
//=== Необходимые для Lua константы ============================================================================//
#define LUA_LIB
#define LUA_BUILD_AS_DLL
//=== Заголовочные файлы LUA ===================================================================================//
extern "C" {
#include "Lua\lua.h"
#include "Lua/lauxlib.h"
}
static int forLua_TestFunc(lua_State *L) // Возвращает заданный текст
{
const char *cc = "Привет из C/C++ и от меня 2 раза"; //str.c_str();
lua_pushstring(L, cc);
return(1);
}
//= == Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua == == == == == == == == == == == == == == == ==//
static struct luaL_reg ls_lib[] =
{
{ "TestFunc", forLua_TestFunc },
{ NULL, NULL }
};
//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
extern "C" LUALIB_API int luaopen_LuaProba(lua_State *L)
{
luaL_openlib(L, "LuaProba", ls_lib, 0);
return 0;
}
Весь проект DLL для VS 2015 можно скачать по ссылке - Признаться уже достал этот 32-битный Quik 7. Работать стало почти невозможно, начал подвисать практически на пустом месте. А если повесить на Quik Lua, а к Lua прицепить DLL, то вообще все эпизодически вставало. DLL-ки, вообще-то, многопоточные и освобождают вызывающие потоки (события) Lua практически за миллисекунды, но если таких событий много Quik встает. Хотя, он и без Lua и DLL тоже регулярно встает.)
Были и другие причины ухода от 32-бит Quik, но это уже связано с брокером и другими факторами.
Итак, новый брокер — новый 64-битный Quik 8.4.1.6. Наконец сбылась мечта идиота!
Что можно сказать, — х64 Quik работает гораздо лучше, все равно временами немного подвисает, но, вроде, некритично. После логин-пароля, прежде чем работать надо подождать, — потоки обезличенных сделок начинают работать только через 3-4 минуты после старта. В общем, с этим все более-менее ОК.
Следующий этап — надо переводить весь подключаемый к Quik софт с х86 на х64, и если есть исходники, то никаких проблем не должно появиться. Если вы не используете в своем софте каких либо дополнительных DLL, то все должно ограничиваться двумя действиями.
1. Меняете в проекте С++ в разделе Файлы ресурсов 32-битную версию файла Lua5.1.lib на 64-битную версию Lua5.1.lib,
2. Выставляете в свой свойствах проекта компиляцию в x64. Можно даже так:

Может, этот вирус и родился в Китае, но гуляет там и по миру уже лет пять или больше, и без специализированной тест-системы его попросту не выявляли», — не исключает замдиректора по науке НИИ вакцин и сывороток им. Мечникова доктор медицинских наук Николай Филатов. Он рассказал, что новый коронавирус не более чем обычная респираторная инфекция, а остановит его только естественная иммунизация населения, для которой нужно время.
Напуганный человек легче отдает деньги и становится более управляемым. Именно в этом, как мне кажется, кроется корень данной проблемы. Кому-то и зачем-то понадобилось очень сильно напугать человечество.
"По нашим оценкам, ликвидности и валютной, и рублевой должно быть достаточно. Тем не менее, нам кажется, что нужно дать больше гибкости финансовой системе для того, чтобы спокойно действовать в текущей ситуации", -