powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / из сишарпа вызвать си (или с++)+
15 сообщений из 15, страница 1 из 1
из сишарпа вызвать си (или с++)+
    #39181223
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из сишарпа хочу вызвать такую функцию


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
typedef unsigned long long bitmask_t;

/*****************************************************************
 * hilbert_c2i
 * 
 * Convert coordinates of a point on a Hilbert curve to its index.
 * Inputs:
 *  nDims:      Number of coordinates.
 *  nBits:      Number of bits/coordinate.
 *  coord:      Array of n nBits-bit coordinates.
 * Outputs:
 *  index:      Output index value.  nDims*nBits bits.
 * Assumptions:
 *      nDims*nBits <= (sizeof bitmask_t) * (bits_per_byte)
 */
bitmask_t
hilbert_c2i(unsigned nDims, unsigned nBits, bitmask_t const coord[])



http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1148413&msg=18409509

//микрософтовским компилятром сишный код компилировался хорошо.

как попроще соединять в один проект?
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39181256
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код на С вынести в DLL. Вызывать по аналогии с WinAPI .

Может проще на C# переписать? По твоей ссылке нет вроде ничего чисто Сишного.
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39181311
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39181526
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TКод на С вынести в DLL. Вызывать по аналогии с WinAPI .

Может проще на C# переписать? По твоей ссылке нет вроде ничего чисто Сишного.
боюсь там не проще.
вот весь исходный код кривой Гильберта от Дуга Мура.
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1148413&msg=18306466



Ок. Изменение стандартного тика на нестандартный (полезно при одном ядре одного процессора) -- вызывается сишная фукнция из winmm.dll
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[DllImport("winmm.dll")]
    private static extern uint timeBeginPeriod(uint period);
    [DllImport("winmm.dll")]
    private static extern uint timeEndPeriod(uint period);
  
    static public void Stop1(uint period)
    {
        uint rc = timeEndPeriod(period);
        Console.WriteLine(" timeEndPeriod, rc = {0}", rc);

    }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
class MMTimersTest
{
    [DllImport("winmm.dll")]
    private static extern uint timeBeginPeriod(uint period);
    [DllImport("winmm.dll")]
    private static extern uint timeEndPeriod(uint period);
  
    static public void Stop1(uint period)
    {
        uint rc = timeEndPeriod(period);
        Console.WriteLine(" timeEndPeriod, rc = {0}", rc);

    }

    static void Main(string []agrs)
    {
        if (agrs.Length < 1)
        { Console.WriteLine("usage: \n timer XXXX\n where XXXX msecs - period of sleeping"); }
        else if (agrs[0] == "-?")
        { Console.WriteLine("usage: \n timer XXXX\n where XXXX msecs - period of sleeping"); }
        else
        {
            Console.WriteLine(" 1 Timer frequency in ticks per second = {0}",    Stopwatch.Frequency);
            int l = Int32.Parse(agrs[0]);
            Stopwatch stopWatch = new Stopwatch();
            uint period = 1;
            Console.WriteLine("Non-Standart tick {0} msecs", period);
            uint rc = timeBeginPeriod(period);
            Console.WriteLine(" now interval =   {0}secs, rc = {1}", period/1000.0, rc );



            //Start(10);
            stopWatch.Start();
            for (int i = 1; i <= 1000; i++)
            {
                Thread.Sleep(l);
            }
            stopWatch.Stop();

            rc = timeEndPeriod(period);
            Console.WriteLine(" timeEndPeriod, rc = {0}", rc);

            TimeSpan ts = stopWatch.Elapsed;

            // Format and display the TimeSpan value.
            string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                ts.Hours, ts.Minutes, ts.Seconds,
                ts.Milliseconds / 10);

            Console.WriteLine("RunTime " + elapsedTime);
            Console.WriteLine("Standart tick");
            Stopwatch stopWatch1 = new Stopwatch();
            stopWatch1.Start();
            for (int i = 1; i <= 1000; i++)
            {
                Thread.Sleep(l);
            }
            stopWatch1.Stop();

             ts = stopWatch1.Elapsed;

            elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                ts.Hours, ts.Minutes, ts.Seconds,
                ts.Milliseconds / 10);
            Console.WriteLine("RunTime " + elapsedTime);
        
        
        
        }
    }


    static Stopwatch watch = new Stopwatch();
    static void Test()
    {
        Console.WriteLine(watch.ElapsedMilliseconds);
    }

}

...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39182704
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чингиз, давай нам отдельным топиком портирование "Convert coordinates of a point on a Hilbert curve to its index"
на шарпы. Тем более что Генри Уоррен описывал сорцы в своей книжке.

Только тесты предоставь.

P.S. Мы тут "башни" в степень возводили... Думаешь Гильберта испугаемся?

P.P.S. Мы в такие шагали дали....
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39182724
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

зачем портировать?
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39182725
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, ради fun.
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39182953
Доктар123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonЧингиз, давай нам отдельным топиком портирование "Convert coordinates of a point on a Hilbert curve to its index"
на шарпы. Тем более что Генри Уоррен описывал сорцы в своей книжке.

Только тесты предоставь.

P.S. Мы тут "башни" в степень возводили... Думаешь Гильберта испугаемся?

P.P.S. Мы в такие шагали дали....


Кстате,
Базист пару дней назад в ПТ примеры АPI показывал ,
как его ДотНет код использует
сишную библиотеку #Стебелька для индексного поиска .

Я думаю он мог бы подробно обьяснить как
там все реализовано.
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39182987
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иш ты. Два года в подполье сидел. Наверное чот гениальное создал.
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39183045
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
не допонял.
Я приаттачил приложение Мура, которое строит всю кривую.

Вот при 16 битах и плоскости - точка 21 26 отображается в 632ю на отрезке.



В коде Мура есть его тесты (и мои скромные дополнения), он сделал взаимнооднозначное отображение и проверяет в обе стороны.

Там бы вьехать, что Мур писал в коментах. Я только понял где
н-ка отображаются на отрезок и точка отрезка в н-ку
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39183048
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39183049
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Advance from one point to its successor on a Hilbert curve - это, наверно, понятно
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39183150
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже чего-то делал для Ipv4-country diagram. Но только генерация самой кривой.

https://sourceforge.net/p/countryipdiagram/code/HEAD/tree/trunk/utils/src/gilbertroute.c
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39183400
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
так шо ветку сделать?
а "Ipv4-country diagram" это что по русски?

пысы
прикольная функция хелпа
Код: plaintext
1.
2.
3.
void printHelp(){
	fprintf(stderr,"\n");
}



пыпысы
шучу я, шучу. Сам такой.
...
Рейтинг: 0 / 0
из сишарпа вызвать си (или с++)+
    #39183403
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо веток. Была уже где-то ветка и сдохла.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / из сишарпа вызвать си (или с++)+
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]