Как плавно разработать C lib для C # /. NET? - PullRequest
1 голос
/ 20 января 2012

Я занимаюсь разработкой сложной библиотеки на C ++ и планирую иметь интерфейс C, чтобы другие могли загрузить DLL и легко получить доступ к библиотеке.Я не пробовал писать код на C #, который имеет доступ к C-коду.Я сделал быстрый Google и нашел код, который использует много атрибутов.

Что я могу сделать, чтобы мой интерфейс был достаточно простым, чтобы не вызывать головную боль, пытаясь синхронизировать .NET с ним?Могу ли я использовать какой-нибудь инструмент для создания заголовков?Я использую только простые структуры POD?Я не уверен, как я должен обрабатывать типы, поскольку они передаются как указатели.Я также думаю, может быть, мне следует избегать использования всего, что не является int / string или массивом.

Я разрабатываю это с использованием MSVC, но в основном использую это с GCC.Я знаю, что должен использовать соглашение о вызовах __stdcall.Помимо того, что я сказал, я абсолютно невежественен.Я на самом деле не знаю, как загрузить DLL в .NET.

Что я могу сделать, чтобы убедиться, что все работает правильно, когда я пишу C lib и заставляю его работать с .NET?

1 Ответ

2 голосов
/ 20 января 2012

Рассмотрите возможность создания интерфейса COM.Использование COM из .NET незначительно проще, чем P / Invoke;по крайней мере, вам не придется прописывать прототипы для всех функций в C #, импортер COM typelib сделает это за вас.

...