Я бы держался подальше от P/Invoke, поскольку это довольно медленно по сравнению с IJW (It Just Works). Последний позволяет плавно переплетать управляемые и неуправляемые c++. Все, что вам нужно сделать, это создать управляемую сборку c++, записать управляемый класс, который виден из c #, и вызвать неуправляемый код из этого.
Uhm... Ок. Я был под впечатлением, что P/Invoke звонки были медленнее, что они по своей природе. Однако, имея явный контроль над сортировкой, вы можете сделать свою версию C + +/CLI, чтобы работать лучше во многих случаях.
Вот статья Microsoft об обоих механизмах:
http://msdn.microsoft.com/en-us/library/ms235282.aspx
Преимущества IJW
- Нет необходимости писать объявления атрибутов DLLImport для неуправляемые API, используемые программой. Просто включить файл заголовка и ссылку с библиотека импорта.
- Механизм IJW немного быстрее (например, заглушки IJW не необходимо проверить необходимость закрепления или копировать предметы данных, поскольку это сделано явно разработчиком).
- Это наглядно иллюстрирует проблемы производительности. В данном случае то, что выполняется перевод из Юникода последовательность в последовательность ANSI и иметь распределение памяти оператора и освобождение. В этом случае a разработчик пишет код с помощью IJW осознает, что призвание _putws и использование PtrToStringChars было бы лучше для выполнения.
- При вызове нескольких неуправляемых API, использующих одни и те же данные, выполняется их сортировка один раз и прохождение упакованной копии гораздо эффективнее, чем повторная упаковка каждый раз.
Есть и эстетические преимущества:
Нет необходимости определять атрибут DLLImport
, нет необходимости определять какие-либо структуры данных (также с определенными атрибутами p/invoke), которые могли бы выглядеть следующим образом:
[StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] публичная структура DevMode { [MarshalAs (UnmanagedType.ByValTStr, StartConst = 32)] общедоступная последовательность dmDeviceName; }
Marshal.PtrToString (ptr)
. IMHO при вызове нечетной функции в Windows SDK используйте P/Invoke. Если вы представляете умеренно сложный C++ API управляемому миру, определенно C + +/CLI.
-121--922064-Это также происходит при устаревшей или неполной установке PHPUnit. Помните, что после настройки PEAR необходимо добавить канал PHPUnit.de , чтобы получить актуальный пакет.
-121--830663-Я верю, что это происходит из теории математики. Наборы, грамматики, языки, последовательности и т.д.
Я думаю, это происходит из математики ... В математике строка - это последовательность символов, что хорошо объясняет сущность строки и в языках программирования.
Строка - это строка символов. Это обычное употребление слова, восходящее к 1488 году.
строка (сущ.)
др. Streng "леска, шнур, нить" от P.Gmc. * strangiz (ср. ON Strengr, данн. streng, M.Du. strenge, Du. streng, OHG strang, нем. Strang "веревка, шнур"), от основания * strang- "туго, жестко", от основания PIE * strenk- "туго, узко; натянуть, скрутить" (см. напряжение). Постепенно ограничивается ранним M.E. линиями, которые меньше веревки. Смысл «ряда объектов, расположенных в линию» впервые зафиксирован в 1488 году. [...]