标签: undefined-reference

C++:对命名空间中函数的未定义引用

我在这里,试图找出我的代码有什么问题,但没有成功:(\n我正在编写一个重采样器,但我想这根本没有兴趣,我只是想让你做这个愚蠢的警告消失。无论如何,这是我的代码:

\n\n

ddc.hpp

\n\n
#ifndef __DIGITAL_DOWN_CONVERTER_H__\n#define __DIGITAL_DOWN_CONVERTER_H__\n\n#include <vector>\n#include "interpolator.h"\n\nnamespace ddc {\n    void decimate(std::vector<float> &, unsigned int);\n    void expand(std::vector<float> &, unsigned int);\n    void perform_resampling(std::vector<float>, unsigned int, unsigned int);\n    void generate_filter(std::vector<float> &, unsigned int, unsigned int);\n    float Sinc(float);\n    unsigned int mcd(unsigned int, unsigned int);\n}\n\n#endif\n
Run Code Online (Sandbox Code Playgroud)\n\n

ddc.cpp

\n\n
#include "ddc.hpp"\n\nnamespace ddc {\n    void perform_resampling(std::vector<float> &data, unsigned int freq_1, unsigned int freq_2) {\n        unsigned int i, gcd = mcd(freq_1, freq_2);\n        unsigned int downFactor, upFactor;\n        std::vector<float> filter;\n\n        downFactor = freq_1/gcd;\n        upFactor   = freq_2/gcd;\n\n        generate_filter(filter, 1024 …
Run Code Online (Sandbox Code Playgroud)

c++ g++ undefined-reference

8
推荐指数
1
解决办法
2万
查看次数

clang ++ 3.2链接器没有找到C++ stdlib

我在我的Ubuntu 13.04机器上安装了clang 3.2,并编译和构建了libc ++,一切都已就绪.但是,当我尝试链接我的(非常简单的)代码时,链接器报告对std :: cout等的引用是未定义的.

如果有人能告诉我我能做些什么来解决这个问题,我会非常感激 - 我已经尝试了所有我能想到的东西.

命令和输出在这里:

$ clang++ -v -stdlib=libc++ -lpthread -ldl sqlite3/sqlite3.o src/world.o -o bin/world

Ubuntu clang version 3.2-1~exp9ubuntu1 (tags/RELEASE_32/final) (based on LLVM 3.2)

Target: x86_64-pc-linux-gnu

Thread model: posix

 "/usr/bin/ld" -z relro --hash-style=gnu --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o bin/world /usr/bin/../lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/crt1.o /usr/bin/../lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/4.7/crtbegin.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/4.7 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/bin/../lib/gcc/x86_64-linux-gnu/4.7/../../.. -L/lib -L/usr/lib -lpthread -ldl sqlite3/sqlite3.o src/world.o -lc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/bin/../lib/gcc/x86_64-linux-gnu/4.7/crtend.o /usr/bin/../lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/crtn.o

src/world.o: In function `main':

/home/douglivesey/work/home/cpp/clang/biots/src/world.cpp:17: undefined reference to `std::cout'

/home/douglivesey/work/home/cpp/clang/biots/src/world.cpp:17: …
Run Code Online (Sandbox Code Playgroud)

c++ linker clang undefined-reference libc++

8
推荐指数
1
解决办法
6207
查看次数

VScode 中未定义的引用错误

我正在测试如何在 C 中使用 extern ,因此我为 main.c、test.c、headfile.h 创建三个文件。我想在 headfile.h 中声明变量和函数,在 test.c 中定义,然后在 main.c 中打印出变量并调用函数。它通过使用 Dev c++ 成功运行,但是,当我将完全相同的文件放入VScode 显示错误,指出存在未定义的变量引用

错误消息 在此处输入图像描述

主程序

#include <stdio.h>
#include <stdlib.h>
#include"D:\My Documents\Desktop\CODE\c\VScode\externTest\headfile.h"
int gVar = 1;

int main(void)
{
    extern float a;

    printf("a = %f\n",a);
    printf("gVar = %d\n",gVar);
    printf("aa = %d\n",aa);
    printf("bb = %f\n",bb);
    function ();
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

测试.c

#include <stdio.h>
#include "D:\My Documents\Desktop\CODE\c\VScode\externTest\headfile.h" 
float a = 100;
int aa = 200;
float bb = 300;

void function (void){
    printf("yeh you got it!!\n");
    extern …
Run Code Online (Sandbox Code Playgroud)

c undefined-reference visual-studio-code

8
推荐指数
2
解决办法
5万
查看次数

使用头文件时未定义的符号错误

我收到了以下错误,并且不能为我的生活弄清楚我做错了什么.

$ gcc main.c -o main

Undefined symbols:
  "_wtf", referenced from:
      _main in ccu2Qr2V.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

main.c中:

#include <stdio.h>
#include "wtf.h"

main(){
    wtf();
}
Run Code Online (Sandbox Code Playgroud)

wtf.h:

void wtf();
Run Code Online (Sandbox Code Playgroud)

wtf.c:

void wtf(){
    printf("I never see the light of day.");
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我将整个函数包含在头文件中而不仅仅是签名中,那么它就符合要求,因此我知道wtf.h被包含在内.为什么编译器看不到wtf.c?或者我错过了什么?

问候.

c linker-errors undefined-reference undefined-symbol

7
推荐指数
1
解决办法
7632
查看次数

G ++ Cpp中的"未定义引用"

似乎无法让错误消失.错误如下.我已经看过谷歌仍然无法搞清楚.这不像我是Cpp的新手,但有一段时间没有被它愚弄.

奇怪的是它在Windows中使用G ++ ...

错误:

  • [泽@ fed0r!- - - **_ _*] $ g ++ main.cpp
  • /tmp/ccJL2ZHE.o:在函数`main'中:
  • main.cpp :(.text + 0x11):未定义引用`Help :: Help()'
  • main.cpp :(.text + 0x1d):未定义引用`Help :: sayName()'
  • main.cpp :(.text + 0x2e):未定义引用`Help ::〜Help()'
  • main.cpp :(.text + 0x46):未定义引用`Help ::〜Help()'
  • collect2:ld返回1退出状态

main.cpp中

#include <iostream>
#include "Help.h"

using namespace std;

int main () {

    Help h;
    h.sayName();

    // ***

    // ***

    // ***
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

Help.h

#ifndef HELP_H
#define HELP_H

class Help {
    public:
        Help();
        ~Help();
        void sayName();
    protected:
    private:
}; …
Run Code Online (Sandbox Code Playgroud)

c++ g++ undefined-reference

7
推荐指数
2
解决办法
2万
查看次数

虚拟函数本质上应该有一个定义吗?

是否必须为虚函数定义?

请考虑以下示例程序:

#include <iostream>

using namespace std;

class base
{
   public:
      void virtual virtualfunc();
};

class derived : public base
{
   public:
   void virtualfunc()
   {
      cout << "vf in derived class\n";
   }
};

int main()
{
   derived d;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这给出了链接错误:

在function base::base():: undefined引用中vtable for base

我没有基类中虚函数的定义.为什么即使我没有显式调用虚函数,也会发生此错误?

我发现有趣的是,如果我没有实例化类的对象derived,则链接错误不再存在.为什么是这样?什么实例化与上述链接错误有关?

c++ virtual-functions undefined-reference

7
推荐指数
2
解决办法
4566
查看次数

未定义的引用`gzopen`错误

我的C程序使用一些zlib函数(比如gzopen,gzread).我已经zlib.h在我的程序中包含了头文件,并-lz在编译时添加了选项,但我仍然得到一个错误,即gz函数有未定义的引用.我正在使用kubuntu 11.10并安装了以下软件包:libgh-zlib-dev,zlib1g-dbg,zlib1g和zlib1g-dev.

我试过改变连接命令的位置,但没有运气.这是我现在拥有的那个:

CFLAGS = -Wall -pthread -lm -lz -std = c99-Wextra

c compilation zlib hyperlink undefined-reference

7
推荐指数
1
解决办法
1万
查看次数

对'inflateInit2_'的未定义引用

我正在使用Code Blocks IDE,我想为SFML安装Tiled Map Editor.所以,我下载了源代码并将其导入我的项目.不幸的是,由于缺少zlib库,构建完成了错误.我下载并重新构建.这次我收到的错误如下:

undefined reference to `inflateInit2_'|
undefined reference to `inflateEnd'|
undefined reference to `inflateEnd'|
Run Code Online (Sandbox Code Playgroud)

在Internet上我找到了加入链接器命令的建议-lz,但编译器拒绝抛出错误:找不到-lz.有谁知道如何修理它?

问候.

c++ windows gcc zlib undefined-reference

7
推荐指数
1
解决办法
2万
查看次数

C++类模板未定义函数引用

当我在我的main函数中调用模板类"add"和"greater"中的两个函数时,我一直得到未定义的引用.

所以,我有:number.h

#ifndef NUMBER_H
#define NUMBER_H

template <class T>
class number {
public:
    T x;
    T y;

    number (int a, int b){
        x=a; y=b;}
    int add (T&);
    T greater ();
};

#endif
Run Code Online (Sandbox Code Playgroud)

number.cpp

#include "number.h"

template <class T>
int number<T>::add (T& rezAdd){
    rezAdd = x+y;
    return 1;
}

template <class T>
T number<T>::greater (){
        return x>y? x : y;
}
Run Code Online (Sandbox Code Playgroud)

我的主文件是:resolver.cpp

#include <stdio.h>
#include <stdlib.h>
#include "number.h"

int main (int argc, char **argv) {
    int aux;
    number<int> c(3,5);

    c.add(aux);
    printf …
Run Code Online (Sandbox Code Playgroud)

c c++ class undefined-reference template-classes

7
推荐指数
3
解决办法
1万
查看次数

虚函数的最终奇数行为

final关键字添加到虚函数声明时,我遇到了一个奇怪的情况,其定义在一个单独的.cpp文件中.
请考虑以下示例:

IClass.hpp

class IClass //COM-like base interface
{
protected:
    virtual ~IClass(){} //derived classes override this

public:
    virtual void release() final;
};
Run Code Online (Sandbox Code Playgroud)

dllmain.cpp(共享库)

#include "IClass.hpp"
...

void IClass::release()
{
    delete this;
}

...
Run Code Online (Sandbox Code Playgroud)

main.cpp(独立可执行文件)

//various includes here
...

int main(int argc, char** argv)
{
    /* From "IGameEngine.hpp"
       class IGameEngine : public IClass
       {
       ...
       };
    */
    IGameEngine* engine = factoryGameEngine();
    ...
    engine->release();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

事实上,GCC 4.9.2将报告undefined reference to 'IClass::release()'
我的目标是IClass::release()在将其实现隐藏在游戏引擎的共享库中时,将其作为不可覆盖的.
有什么建议?

c++ final undefined-reference c++14

7
推荐指数
1
解决办法
265
查看次数