﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">x64 support</title>
  <id>~/topic/1908/x64-support/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-15T04:02:46Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=1908" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/11230/</id>
    <title type="text">Alexander: Задачу с Interop я решил, namespace переименовал. А как мы хотим решать задачу с классами...</title>
    <published>2011-09-19T15:35:34Z</published>
    <updated>2011-09-19T15:35:34Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(11199)" rel="nofollow" target="_blank"&gt;Alexander&lt;/a&gt;:&lt;/strong&gt;
Задачу с Interop я решил, namespace переименовал.&lt;/p&gt;
&lt;p&gt;А как мы хотим решать задачу с классами - когда один и тот же класс, тот же CP2ConnectionClass, определён в 2х namespace'ах? Через интерфейсы тут не решишь, возникнет проблема с приведениями. Пока идей по решению нет у меня.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Мне кажется, идея с врапперами ускользнула. Никакого кастинга между x86 и x64 типа данных делать естественно не нужно. Катинг должен быть между IConnectionWrapper и его реализацией.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(11199)" rel="nofollow" target="_blank"&gt;Alexander&lt;/a&gt;:&lt;/strong&gt;
Есть предложение - сделать подключение того или иного namespace'a по define при билде. Соответственно просто собирать 2 библиотеки - для 32х и 64х и добавлять их обе в релиз. Так и с производительностью потерь точно не будет.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;С производительностью проблем не будет ни при каких вариантах. А сейчас решение практически ничем не отличается от перекомпиляции примера под разные платформы.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/11205/</id>
    <title type="text">Положил на codeplex изменения с возможным билдом 64x версией коннектора. Он билдится в том случае, е...</title>
    <published>2011-09-19T10:52:23Z</published>
    <updated>2011-09-19T10:52:23Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Положил на codeplex изменения с возможным билдом 64x версией коннектора. Он билдится в том случае, если собираем под x64 платформу. В остальных случаях используется 32x библиотека.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/11199/</id>
    <title type="text">Задачу с Interop я решил, namespace переименовал. А как мы хотим решать задачу с классами - когда од...</title>
    <published>2011-09-19T10:13:29Z</published>
    <updated>2011-09-19T10:13:29Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Задачу с Interop я решил, namespace переименовал.&lt;/p&gt;
&lt;p&gt;А как мы хотим решать задачу с классами - когда один и тот же класс, тот же CP2ConnectionClass, определён в 2х namespace'ах? Через интерфейсы тут не решишь, возникнет проблема с приведениями. Пока идей по решению нет у меня.&lt;/p&gt;
&lt;p&gt;Есть предложение - сделать подключение того или иного namespace'a по define при билде. Соответственно просто собирать 2 библиотеки - для 32х и 64х и добавлять их обе в релиз. Так и с производительностью потерь точно не будет.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/11168/</id>
    <title type="text">aspirant: x64 нужно только, если есть обращения к 64-битным native-библиотекам или нужно работать с ...</title>
    <published>2011-09-17T12:29:57Z</published>
    <updated>2011-09-17T12:29:57Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(11166)" rel="nofollow" target="_blank"&gt;aspirant&lt;/a&gt;:&lt;/strong&gt;
x64 нужно только, если есть обращения к 64-битным native-библиотекам или нужно &lt;strong&gt;работать с огромной памятью&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;.NET под 32 бита выделяет всего 1.5 гига. Далее, OME. Это большой объем разве что для телефонов.[smile]&lt;/p&gt;
&lt;p&gt;В реальности есть неудобство при использовании бэк тестера, который прожорлив к памяти. Приходится бота перекомпилировать с x86 на x64 и обратно.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(11166)" rel="nofollow" target="_blank"&gt;aspirant&lt;/a&gt;:&lt;/strong&gt;
Вот, кстати, майкрософтовский &lt;a href="http://blogs.msdn.com/b/rmbyers/archive/2009/06/09/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx" rel="nofollow" target="_blank"&gt;пост&lt;/a&gt; на тему AnyCPU.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Эта статья говорит о том, что с AnyCPU больше проблем (кто бы спорил). Но не противоречит о том, что переход на AnyCPU лучше, чем держать бота конкретно под архитектуру процессора.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/11166/</id>
    <title type="text">Mikhail Sukhov: Может сделать поддержку x64? Я думаю через какое-то время будет уже релиз этого дист...</title>
    <published>2011-09-17T11:37:20Z</published>
    <updated>2011-09-17T11:37:20Z</updated>
    <author>
      <name>aspirant</name>
      <uri>https://stocksharp.ru/users/6114/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(11160)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;
Может сделать поддержку x64? Я думаю через какое-то время будет уже релиз этого дистрибутива.&lt;/p&gt;
&lt;p&gt;Предлагаю сделать это прозрачным механизмом, чтобы работало без перекомпиляции робота. Например, если робот собрать как AnyCPU, то он будет и под 32 и под 64 бита работать в родном режиме. Сейчас приходится робота собирать принудительно под x86 (32 бита).&lt;/p&gt;
&lt;p&gt;В чем основная загвоздка. Дело в том, что названия классов, которые генерируются в сборке Interop.XXX для 32 и 64 бита - одни и те же. Тоесть, нужно научиться их переименовывать Interop.XXX32 и Interop.XXX64  (могу помочь как это сделать).&lt;/p&gt;
&lt;p&gt;Далее, нужно описать COM модель Плазы через интерфейсы. Например, IConnectionWrapper, IStreamWrapper. И создать реализации интерфейсов, ConnectionWrapper32 ConnectionWrapper64. Каждый из них будет посылать вызовы только в свои сборки. Затем, нужно все места, где используются Плаза типы, переделать на использование интерфейсов. Соответственно, при старте нужно будет лишь определить, какой разрядности сейчас процессор и какую реализацию интерфейса нужно подсовывать. Делается просто, через typeof(IntPtr) == 4 -&amp;gt; x86.&lt;/p&gt;
&lt;p&gt;Такую задачу нужно начинать с конца, тоесть сначала реализовать интерфейсы и реализацию для 32 бита (ее же и подсовывать по умолчанию).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;x64 нужно только, если есть обращения к 64-битным native-библиотекам или нужно работать с огромной памятью.  Может просто компилить под х86?  У меня на Win7 (x64) нормально работает 32-битная версия роутера.&lt;/p&gt;
&lt;p&gt;Вот, кстати, майкрософтовский &lt;a href="http://blogs.msdn.com/b/rmbyers/archive/2009/06/09/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx" rel="nofollow" target="_blank"&gt;пост&lt;/a&gt; на тему AnyCPU.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/11160/</id>
    <title type="text">Может сделать поддержку x64? Я думаю через какое-то время будет уже релиз этого дистрибутива. Предла...</title>
    <published>2011-09-16T14:06:59Z</published>
    <updated>2011-09-16T14:08:20Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Может сделать поддержку x64? Я думаю через какое-то время будет уже релиз этого дистрибутива.&lt;/p&gt;
&lt;p&gt;Предлагаю сделать это прозрачным механизмом, чтобы работало без перекомпиляции робота. Например, если робот собрать как AnyCPU, то он будет и под 32 и под 64 бита работать в родном режиме. Сейчас приходится робота собирать принудительно под x86 (32 бита).&lt;/p&gt;
&lt;p&gt;В чем основная загвоздка. Дело в том, что названия классов, которые генерируются в сборке Interop.XXX для 32 и 64 бита - одни и те же. Тоесть, нужно научиться их переименовывать Interop.XXX32 и Interop.XXX64  (могу помочь как это сделать).&lt;/p&gt;
&lt;p&gt;Далее, нужно описать COM модель Плазы через интерфейсы. Например, IConnectionWrapper, IStreamWrapper. И создать реализации интерфейсов, ConnectionWrapper32 ConnectionWrapper64. Каждый из них будет посылать вызовы только в свои сборки. Затем, нужно все места, где используются Плаза типы, переделать на использование интерфейсов. Соответственно, при старте нужно будет лишь определить, какой разрядности сейчас процессор и какую реализацию интерфейса нужно подсовывать. Делается просто, через typeof(IntPtr) == 4 -&amp;gt; x86.&lt;/p&gt;
&lt;p&gt;Такую задачу нужно начинать с конца, тоесть сначала реализовать интерфейсы и реализацию для 32 бита (ее же и подсовывать по умолчанию).&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>