Использование С++ библиотеки в C#

408
09 января 2017, 19:42

Всем привет! Народ, подскажите, может, кто сталкивался с таким.

  1. Есть библиотека на C++ .lib, есть API к ней, в виде заголовочных файлов.

  2. Есть пример использования API на С++

  3. Есть WPF-приложение на C#, в котором необходимо использовать эту библиотеку.

Как это наиболее удобно сделать? C++, к сожалению, не знаю совершенно.. :(

  1. Основной класс из библиотеки, с которым надо работать (заголовочный файл):

    class ManagerWindows: public Manager 
    {
    public:
        static std::shared_ptr<ManagerWindows> getInstance();
    };
  2. Вот пример вызова этого класса :

    std::shared_ptr<ManagerWindows> manager_;
    manager_ = ManagerWindows::getInstance();

Не знаю даже, с какой стороны подступиться...

Попытался написать CLR-враппер:

//library.h
namespace Library {
    public ref class Wrapper
    {
    public:
        std::shared_ptr<ManagerWindows> getInstance();
    };
}
//library.cpp
std::shared_ptr<ManagerWindows> Library::Wrapper::getInstance()
{
    return ManagerWindows::getInstance();
}

При попытке использования из С# такая ошибка компиляции:

        Wrapper mw;
        mw = new Wrapper();
        object o = mw.getInstance();

Error CS0570 'Wrapper.getInstance(?)' is not supported by the language

READ ALSO
Не присваивается значение строке c#

Не присваивается значение строке c#

Собственно сам вопрос, есть строка которой должно быть присвоенно значение

438
Длинный url (get-запрос) в file_get_contents

Длинный url (get-запрос) в file_get_contents

ЗдравствуйтеРаботаю с vk API, отправляю сообщения обыкновенным методом messages

584
Call to undefined function import_request_variables()

Call to undefined function import_request_variables()

Сервер с PHP 53 перешел на PHP 5

566