gpt4 book ai didi

c++ - 链接器问题 : undefined reference

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:37 27 4
gpt4 key购买 nike

我在构建当前项目时遇到链接器问题。

报错如下:

libmiinddynamic.so: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& SparseImplementationLib::operator<< <double, double, SparseImplementationLib::DefaultPtr<double, double> >(std::basic_ostream<char, std::char_traits<char> >&, SparseImplementationLib::AbstractSparseNode<double, double, SparseImplementationLib::DefaultPtr<double, double> > const&)'

这有点奇怪,据我所知,这个方法是在肯定正在编译的文件中声明的:


namespace SparseImplementationLib {
template <ActivityType,WeightType,ptr_type =
DefaultPtr<ActivityType,WeightType> > class AbstractSparseNode;
// A whole bunch of other methods<p></p>

<pre><code>//! All derived classes from AbstractSparseNode can use operator<<
template <class ActivityType, class WeightType, class ptr_type>
ostream& operator<<
(
ostream& s,
const AbstractSparseNode<ActivityType,WeightType>& node)
{
node.ToStream(s);
return s;
}
</code></pre>

<p>}
</p>

为什么会弹出这个错误?

注意这是在 Fedora 上使用 MPICXX 编译的,我使用的是 CCMAKE。

编辑好的,使用 nm 我发现了以下内容:

std::ostream& SparseImplementationLib::operator<< <double, double, SparseImplementationLib::DefaultPtr<double, double> >(std::ostream&, SparseImplementationLib::AbstractSparseNode<double, double, SparseImplementationLib::DefaultPtr<double, double> > const&)

当它需要这个时:

std::basic_ostream >& SparseImplementationLib::operator<< <double, double, SparseImplementationLib::DefaultPtr<double, double> >(std::basic_ostream >&, SparseImplementationLib::AbstractSparseNode<double, double, SparseImplementationLib::DefaultPtr<double, double> > const&)
不幸的是,我不知道如何解决这个问题,cus operator<< 只接受 2 个参数。

(所有 _s 之前的随机\s 是为了尝试转义它们,stackoverflow 今天有点喜怒无常,不会这样做(否则我们的代码中会随机得到可爱的斜体))

最佳答案

你能 nm 上面显示的代码生成的对象吗?签名确实是你所期望的。

关于c++ - 链接器问题 : undefined reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/639194/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com