Оболочка C ++ / CLI не может использовать вектор из нативной C ++ dll - PullRequest
0 голосов
/ 01 марта 2019

У меня есть проект, который выглядит так: C ++ -> C ++ / CLI wrapper -> C # app.

У меня есть экспортированный класс , называемый Drawing в dll C ++, .h содержит static std::vector<void*>, вектор определен в файле .cpp.

Проблема в том, что я получаю следующие ошибки:

Ошибки

Собственный dll .lib файл C ++ связан с оболочкой, иобычно оболочка работает с другими вещами, но как только я добавляю std :: vector, она начинает выдавать ошибки компоновщика.

Я попытался создать функцию в dll C ++ с аргументом void* в качестве аргумента и добавил всписок "внутренне", но я все еще получаю такие же ошибки:

Ошибки

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

1 Ответ

0 голосов
/ 01 марта 2019

Ответ, расширяющий мой комментарий.
Вы можете попытаться обернуть std::vector<void*> в более простую структуру с функциями, которые вам действительно необходимы, например:

class YourClass
{
private:
    std::vector<void*> _vec;

public:
    // implement functionalities you need
    void add(void* elem)
    {
        _vec.add(elem);
    }
    // etc.
};

или по наследству:

class YourClass : public std::vector<void*>
{
public:
    YourClass(int size)
    : std::vector<void*>(size) {}
};
...