【发布时间】:2019-03-01 08:06:15
【问题描述】:
我有一个这样的项目:C++ -> C++/CLI 包装器 -> C# 应用程序。
我在 C++ dll 中有一个名为Drawing 的导出类,.h 包含一个static std::vector<void*>,向量在 .cpp 文件中定义。
问题是我收到以下错误:
C++ 的本机 dll .lib 文件链接到包装器,通常包装器可以与其他东西一起使用,但是一旦我添加了 std::vector,它就会开始引发链接器错误。
我尝试在 C++ dll 中创建一个以 void* 为参数的函数并“内部”添加到列表中,但我仍然遇到相同的错误:
感谢任何形式的帮助
【问题讨论】:
-
我怀疑签名有问题。您导出了符号
std::vector<void*>,而链接器需要std::vector<void*, ALLOCATOR>。也许解决方案是将向量包装成更简单的非模板结构? -
标准 C++ 错误,您声明了静态成员但没有定义它们。谷歌“c++ 静态成员定义”查找命中,第一个是不错的。
-
@Hans Passant,正如我所提到的,我在 .cpp 文件中定义了它。
-
@woockashek,如何将向量包装到非模板结构中?
标签: c++ c++-cli linker-errors