Использование функций C в библиотеке * .a из .NET - PullRequest
0 голосов
/ 28 января 2012

У меня есть API, который состоит из заголовочных файлов (.h) и файлов библиотеки (.a).

Я никогда не касался C, и мне нужно получить доступ к этому API из C # и взаимодействовать с его функциями.

Большинство вопросов по этой теме говорят, что мне нужно сделать что-то вроде [DllImport("insert_the_dll_name_here")], чтобы вызвать методы DLL. Но у меня есть только файлы .h и .a.

Что мне делать?

Должен ли я скомпилировать эти файлы в DLL, а затем использовать pInvoke? Если да, то как?

Или я должен написать класс-обертку? Если так, то как?

Любая помощь приветствуется.

1 Ответ

5 голосов
/ 28 января 2012

Если ваши .a файлы содержат объектные файлы в формате Windows, вы можете извлечь архив (для этого используйте инструмент cygwin ar) и связать его с проектом C ++ / CLI. C ++ / CLI может использовать ваши заголовочные файлы, напрямую вызывать функции C и создавать классы .NET, которые C # может использовать так же легко, как и любой предоставляемый Microsoft библиотечный класс.

Если ваши .a файлы содержат объектные файлы в формате Linux, вам нужно вернуться к тому, кто их предоставил, и попросить перекомпилировать код для Windows.

...