Такая задержка вполне ожидаема. Пропуск простого факта, что Spark не предназначен для использования непосредственно встроенным в интерактивное приложение (и не подходит для запросов в реальном времени), приводит к значительным издержкам
Вопрос в том, имеет ли смысл вообще использовать Spark здесь - если вам нужен отклик в режиме реального времени, и вы собираете полные результаты для драйвера, используя собственный разъем Cassandra , будет намного лучший выбор.
Однако, если вы планируете выполнять логику, которая не поддерживается самой Cassandra, тогда все, что вы можете сделать, это принять стоимость такой косвенной архитектуры.
Если это «нормальная» DLL (не COM, не управляемая C ++), вы не можете добавить такую ссылку. Вы должны добавить подписи p / invoke (определения внешних статических методов) для экспортов, которые вы хотите вызвать в вашей DLL.
Если это простая библиотека C ++, то ссылаться на нее таким способом невозможно.
У вас есть два варианта Вы можете скомпилировать библиотеку C ++ как сборку и представить неуправляемый код с помощью оболочки C ++ / CLI.
-or-
Вы можете использовать некоторые вызовы p / invoke, если библиотека предоставляет свои функциональные возможности через C API.
Не могли бы вы немного расширить вопрос, чтобы включить некоторые подробности о том, как вы обычно вызываете imaging.dll из c ++?
если это неуправляемая dll, вы не можете добавить ссылку на нее. Вы должны вызвать его с помощью pinvoke или чего-то подобного:
public classFoo
{
[DllImport("myunmanaged.dll", CharSet = CharSet.Ansi)]
private extern static int UnmanagedFunction(int type, int dest);
}
Если вы хотите преобразовать его в управляемый dll, посмотрите здесь: http://msdn.microsoft.com/en-us/library/aa446538.aspx
Если вы хотите узнать больше о pinvoke и dllimport, посмотрите здесь: http://msdn.microsoft.com/en-us/library/aa288468.aspx
Ура
Соглашение о вызовах и различие моделей памяти между управляемым кодом (C #) и неуправляемым кодом (WIn32 C ++) делают их несовместимыми.
Однако .NET включает технологию моста для объектов COM, так что, если вы представляете себе DLL-файл как COM-объект, его можно заставить работать. Это, однако, очевидно, не COM-объект.
Если это чистая C ++ DLL, куда вы экспортируете только C-совместимые функции, затем вы можете использовать P / Invoke для использования этих функций. Если вы превратите эту C ++ DLL в COM DLL с библиотекой типов, использовать ее будет еще проще: вы можете импортировать библиотеку типов в оболочки .NET и .NET (называемые оболочечными оболочками времени выполнения).