C ++ / CLI包装器不能使用本机C ++ DLL中的向量

问题描述 投票:0回答:1

我有一个这样的项目:C ++ - > C ++ / CLI包装器 - > C#app。

我在C ++ dll中有一个名为Drawing的导出类,.h包含一个static std::vector<void*>,该向量在.cpp文件中定义。

问题是我遇到以下错误:

Errors

C ++的本机dll .lib文件链接到包装器,通常包装器与其他东西一起工作,但是一旦我添加了std :: vector,它就会开始抛出链接器错误。

我尝试在C ++ DLL中创建一个函数,它将void*作为一个argumument添加到列表“内部”,但我仍然遇到了相同的错误:

Errors

任何形式的帮助表示赞赏

c++ c++-cli linker-errors
1个回答
0
投票

回答扩展我的评论。 您可以尝试将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) {}
};
© www.soinside.com 2019 - 2024. All rights reserved.