Учитывая, что вы используете библиотеку C ++, я предполагаю, что она использует преимущества семантики C ++, такие как классы, а не просто представляет процедуры. Если это так, то обычно это делается с помощью созданной вручную управляемой библиотеки взаимодействия C ++.
По сути, вы создаете управляемую библиотеку C ++ в Visual Studio, ссылаетесь на существующую библиотеку C ++ и создаете управляемую оболочку вокруг существующих классов C ++. Затем вы ссылаетесь на эту (управляемую) сборку C ++ в своем проекте C # и включаете оригинальную (неуправляемую) библиотеку C ++ в свою сборку C #, как файл, который помещается в каталог сборки.
Это необходимо, потому что нет способа ссылаться на такие вещи, как классы C ++, через вызовы P / Invoke (DllImport
).
Если ваша базовая библиотека является просто набором функций, то вы можете ссылаться на это непосредственно в проекте C # с помощью функций P / Invoke.
В любом случае, все библиотеки, упомянутые выше (для первой, неуправляемая библиотека C ++, управляемая сборка C ++ и проект C #, или, во-вторых, неуправляемая библиотека C ++ и проект C #) должны быть включены в любом проекте, который ссылается на них. Вы не можете статически связать неуправляемую библиотеку с управляемой сборкой.