среда, 19 октября 2011 г.

Algorithmic Prophecy









Смотреть с сабами

Очень очень занятно и в тему.
Сегодня мне тоже посчастливилось говорить умные вещи и растирать пальцами мел. Удивительно.

пятница, 10 июня 2011 г.

DACHA YACHTA HOMO

DSC02108

На свежем воздухе и работается лучше. Первый опыт переноса офиса на природу успешно завершен. Коммуникации подключены, поставки провизии осуществлены, роли розданы, небо открыто.

В предвкушении второго этапа.

Велкам.

вторник, 3 мая 2011 г.

arroy.info

Внезапно переехал на новый адрес. Если Вас сюда средиректило с прежнего – все в порядке, это не рыба.

суббота, 23 апреля 2011 г.

13D LOVES YOU!

Переезд закончен. Сервера застучали своими металлическими сердцами. Песня из бит понеслась по оптическому волокну. Забежала флуоресцентная кровь по системе охлаждения. Заскрипели титановые иглы винчестеров. Залился рассветом восток. Мы снова запустились.

вторник, 22 февраля 2011 г.

Передача строки из C++ в C#

На память (особенно если трюки с char* не принесли должного результата):

С++ dll :

extern "C" __declspec(dllexport) void __stdcall getLongString(char str[], int str_length)
{
   strncpy(str,"long long string",str_length);
   result[str_length-1]='\0';
}

C# app :
[DllImport(“c++_dll_name”, CharSet = CharSet.None)]
public static extern void getLongString(StringBuilder str, int str_length);

public static string get_long_string()
{
   StringBuilder sb = new StringBuilder(260);
   getLongString(sb,sb.Capacity);
   return sb.ToString();
}

Гуд лак!

пятница, 7 января 2011 г.

C++ знакомится с C#

Небольшая памятка, как вызвать с++ unmanaged код из c#.
Создаем dll на плюсах (обычная, не /clr!), где обьявляем экспортируемые функции:
extern "C" __declspec(dllexport) int __stdcall Plus(int a, int b) 
{ 
return a+b; 
}

Далее в шарповом коде создаем небольшой классик, экспортируем функцию и оборачиваем ее для удобства, вот так:

class Wrapper
{
[DllImport("Wrapper.dll")]
static extern int Plus(int a, int b);

public static int plus(int a, int b)
{
try
{
return Plus(a,b);
}
catch (DllNotFoundException e)
{
Console.WriteLine(e.ToString());
}
catch (EntryPointNotFoundException e)
{
Console.WriteLine(e.ToString());
}

return 0;
}
};

Далее использовать функцию следует вот так:
int result = Wrapper.plus(66,11);

Собственно все. Сейчас в одном из проектов реализуется идея написания гуи на шарпе, логики – на плюсах, что получится в итоге – увидим, отчитаюсь. Пока все достаточно удобно.