Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 链接器问题,不';找不到现有的方法?_C++_Linker - Fatal编程技术网

C++ 链接器问题,不';找不到现有的方法?

C++ 链接器问题,不';找不到现有的方法?,c++,linker,C++,Linker,好的,我在当前项目中与链接器有问题(这是另一个问题的继续,ish) 基本上,链接器在dynamiclib.so中提供了一个未定义的引用,用于: std::basic_ostream<char, std::char_traits<char> >& SparseImplementationLib::operator<< <double, double, SparseImplementationLib::DefaultPtr<double, double>

好的,我在当前项目中与链接器有问题(这是另一个问题的继续,ish)

基本上,链接器在dynamiclib.so中提供了一个未定义的引用,用于:
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&)

std::basic\u ostream&sparseimplementalib::operator听起来您没有正确地将dynamiclib.so链接到sparseimplementalib。您的makefile中是否有类似于-lSparseImplementationLib的链接器标志?

我正在处理的类似gStreamer的引擎(几乎)存在相同的问题-从.so文件调用的函数在主代码中不存在

我发现链接器正在删除该函数,因为它没有被任何内部函数调用

目前,我已经通过强制链接器通过函数调用/构造函数将函数包含在一个条件从未调用的函数中来解决这个问题:-

bool callme = false;

if(callme == true)
{
    dummyfunction();
}
我发现这迫使链接器包含,但代码本身从未运行过


如果任何人有一个解决方案,要么停止链接器如此智能,要么有一个“正确”的方法使用,我想听听它

好的,我在昨晚大约10个小时的黑客攻击后,今天早上设法解决了这个问题


事实证明,如果您将函数的定义内联,并确保它具有包含所有模板参数和非默认参数的函数选项,它将编译

SparSeImplementalib是另一个从代码文件编译而来的库,它位于另一个目录中,名为libmiindsparseimplementation.so,很好地链接了它。因为这是CCMAKE,我不能真的弄乱make文件,如果你这样做的话,它会疯掉的。
bool callme = false;

if(callme == true)
{
    dummyfunction();
}