标签: undefined-reference

C++ - 对最近创建的类的未定义引用!

我刚刚创建了这个新类:

//------------------------------------------------------------------------------
#ifndef MULTITHREADEDVECTOR_H
#define MULTITHREADEDVECTOR_H
//------------------------------------------------------------------------------
#include <vector>
#include <GL/GLFW.h>
//------------------------------------------------------------------------------
template<class T>
class MultithreadedVector {

    public:

        MultithreadedVector();

        void push_back(T data);

        void erase(typename std::vector<T>::iterator it);

        std::vector<T> get_container();
    private:

        std::vector<T> container_;
        GLFWmutex th_mutex_;


};
//------------------------------------------------------------------------------
#endif // MULTITHREADEDVECTOR_H_INCLUDED
//------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

类的定义:

//------------------------------------------------------------------------------
#include "MultithreadedVector.h"
//------------------------------------------------------------------------------
using namespace std;
//------------------------------------------------------------------------------
template<class T>
MultithreadedVector<T>::MultithreadedVector() {

    th_mutex_ = glfwCreateMutex();
}

template<class T>
void MultithreadedVector<T>::push_back(T data) {

    glfwLockMutex(th_mutex_);
    container_.push_back(data);
    glfwUnlockMutex(th_mutex_);

}

template<class T>
void MultithreadedVector<T>::erase(typename vector<T>::iterator it) {

    glfwLockMutex(th_mutex_);
    container_.erase(it);
    glfwUnlockMutex(th_mutex_);
}

template<class T>
vector<T> …
Run Code Online (Sandbox Code Playgroud)

c++ codeblocks undefined-reference

0
推荐指数
1
解决办法
6390
查看次数

c ++中未定义的引用编译器错误

当我尝试编译代码时,我收到以下错误消息 -

在函数'__static_initialization_and_destruction_0'中:home/user/main.cpp:50:对'PhysEng2D :: PhysEng2D(void)'的未定义引用

第50行唯一的代码是 -

PhysEng2D Physics; 
Run Code Online (Sandbox Code Playgroud)

PhysEng2D的头文件是 -

#ifndef _PHYSENG2D_H_ 
#define _PHYSENG2D_H_ 

#include "primitives.h"

class PhysEng2D
{
public:

    PhysEng2D::PhysEng2D(); 
    PhysEng2D::~PhysEng2D();

    bool IsBoundingBoxCollision(PS2Sprite & S1, PS2Sprite & S2); 

    bool IsWallCollision(PS2Sprite & S); 

}; 

#endif
Run Code Online (Sandbox Code Playgroud)

PhysEng2D的其余部分的开头是 -

#include "primitives.h"
#include "physeng2d.h" 


PhysEng2D::PhysEng2D()
{
    //Nothing to Initialise 
}

PhysEng2D::~PhysEng2D()
{
    //Nothing to clean up
}
Run Code Online (Sandbox Code Playgroud)

(我没有完全包括这些方法因为我认为它们不相关)

对不起,我知道这可能是一个非常愚蠢的小错误,我正在制作.

c++ compiler-construction undefined-reference

0
推荐指数
1
解决办法
671
查看次数

未定义的参考问题

我在C++中遇到这个错误,我真的不知道如何找到它的底部:

g++ proxy.cpp -lboost_thread -lboost_filesystem -lboost_system
Run Code Online (Sandbox Code Playgroud)

/tmp/ccUHa2s3.o:在函数`main'中:proxy.cpp :(.text + 0x1d8):未定义引用` server::server(std::deque<boost::shared_ptr<boost::asio::io_service>, std::allocator<boost::shared_ptr<boost::asio::io_service> > > const&, int)'collect2:ld返回1退出状态

我有以下源代码(我复制了http://alexott.net/common/asio-proxy-async/proxy-conn.cpp.html):

//proxy.cpp:
#include "proxy-server.hpp"

int main(int argc, char** argv) {
    try {
        int thread_num=2;
        if(argc > 1)
            thread_num=boost::lexical_cast<int>(argv[1]);
        ios_deque io_services;
        std::deque<ba::io_service::work> io_service_work;

        boost::thread_group thr_grp;

        for (int i = 0; i < thread_num; ++i) {
            io_service_ptr ios(new ba::io_service);
            io_services.push_back(ios);
            io_service_work.push_back(ba::io_service::work(*ios));
            thr_grp.create_thread(boost::bind(&ba::io_service::run, ios));
        }
        server server(io_services);   //apparently there's some error here?
        thr_grp.join_all();
    } catch (std::exception& e) {
        std::cerr << e.what() << std::endl;
    } …
Run Code Online (Sandbox Code Playgroud)

c++ undefined-reference

0
推荐指数
1
解决办法
1131
查看次数

未定义的参考/未解析的外部符号

我正在尝试使用WinSock.h头文件,但我得到以下任何一个错误:在VS2010(C++)中:

Unresolved External Symbol to [the function included in winsock.g, e.g socket()]
Run Code Online (Sandbox Code Playgroud)

在gcc命令行(C)中:

Undefined Reference to [the function included in winsock.g, e.g socket()]
Run Code Online (Sandbox Code Playgroud)

代码很简单:只包含Winsock.h头文件然后

SOCKET s =  socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
Run Code Online (Sandbox Code Playgroud)

socket()closesocket()函数有错误......!我在Stackoverflow中搜索并发现了几个主题,但他们都建议更改头文件.我无法在这里更改WinSock.h,因此我需要在使用头文件的实际代码中使用解决方案.有任何想法吗?

c winsock unresolved-external undefined-reference

0
推荐指数
1
解决办法
1333
查看次数

"对PrintArgv的未定义引用":为什么?

当我编译我的程序时,我得到三个"未定义的引用'PrintArgv(...)'"错误.我搜索过,但找不到我收到这些错误的原因.这是我的代码:

    #include "tools.hpp"

enum ARG_T {COMMAND, SWITCH, ARGUMENT};
void ReadArgs(int, char**, ofstream&);
void PrintArgv(char*, ARG_T, ofstream&);


int main(int argc, char* argv[])
{
    ofstream fout;
    try{
        fout.open("P1Ford.txt", ios::out | ios::app);
    }
    catch(...)
    {
        //fatal("Could not open file P1Ford.txt");
        cout << "Could not open file P1Ford.txt" << "\n";
        return -1;
    }

    ReadArgs(argc, argv, fout);

    fout.close();
    return 0;
}

/*-----------------------------------------------------------------------------
This function takes the values passed in through the command line
then examines each one to determine if it is the command, a …
Run Code Online (Sandbox Code Playgroud)

c++ g++ undefined-reference

0
推荐指数
1
解决办法
318
查看次数

C++未定义的引用

嗨,在我的程序中,我有两个构造函数;

BinaryImage();

BinaryImage(int MM, int NN, double* input_data, double thresh);
Run Code Online (Sandbox Code Playgroud)

在我的主要;

BinaryImage BinaryImageObj();
Run Code Online (Sandbox Code Playgroud)

编译好,但是当我调用第二个construtor时;

BinaryImage BinaryImageObj2(MM,NN,data,1);
Run Code Online (Sandbox Code Playgroud)

然而这会带来错误;

main.cpp ||未定义的引用`BinaryImage :: BinaryImage(int,int,double*,double)'

它为什么这样做?我错过了一些简单的东西吗?

谢谢

麦克风

此矩阵类构造函数创建对象

Matrix::Matrix(int MM, int NN, double* input_data){

                      M = MM;
                      N = NN;
                      data = new double[M * N];
                      for ( int i =0; i < M; i++)
                      {
                          for (int j = 0; j < N; j++)
                          {
                              data[i* N+j] = input_data[i*N+j];
                           //   cout << data[i*N+j] <<"\t";
                          }
                      //    cout <<"\n";
                      }

           cout << "This …
Run Code Online (Sandbox Code Playgroud)

c++ undefined-reference

0
推荐指数
1
解决办法
1293
查看次数

未定义的类构造函数引用

这是我的代码:

menuState.hpp

#ifndef MENU_STATE_HPP
#define MENU_STATE_HPP

#include "state.hpp"
#include <SFML/Graphics.hpp>

class MenuState : public State
{
    public:
        MenuState();

        static void create(StateListener* Parent, const std::string name)
        {
            MenuState* myState = new MenuState();
            myState->parent = Parent;
            Parent->manageState(name, myState);
        }

        void enter();
        void exit();
        void resume();
    private:

};

#endif // MENU_STATE_HPP
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到一个未定义的构造函数引用MenuState* myState = new MenuState();,我不确定为什么因为MenuState :: MenuState()在类声明中的create函数之前.

编辑:我也得到了所有我的sfml函数相同的错误.

这是确切的构建消息:http://pastebin.com/e819FhPj

我确实链接了sfml库,并在我的编译器搜索目录中设置了标题路径.

c++ undefined-reference

0
推荐指数
1
解决办法
4022
查看次数

对main()中函数的未定义引用

我试图在单独的文件上制作程序.不幸的是,我在尝试构建代码时遇到了错误.它指向未定义的对constuctors,destructos和函数CzynnikiPierwsze的引用.所以我决定将整个代码放在一个代码中.仍然存在main()函数的问题:未定义引用'CzynnikiPierwsze(int)'任何想法都错了?这是整个代码:

#include <iostream>
#include <cctype>
#include <vector>


using namespace std;
vector<int> CzynnikiPierwsze(int);


class NieprawidlowaDana                           //wyjatki
    {};
class SpozaZakresu
    {};



class RozkladLiczby{
    private:
        int *tab;
    public:
        RozkladLiczby(int);                  //konstruktor
        vector<int> CzynnikiPierwsze(int); //metoda
        ~RozkladLiczby();
};  
Run Code Online (Sandbox Code Playgroud)

///////////////// CLASS的身体///////////////////////////// ////////

RozkladLiczby::~RozkladLiczby()         //destruktor
{}

RozkladLiczby::RozkladLiczby(int n){
    int* tab = new int[n+1];
    int i,j;

    for( i=0;i<=n;i++)
        tab[i]=0;                  //zerujemy tablice

    for( i=2;i<=n;i+=2)
        tab[i]=2;                  //zajmujemy sie liczbami parzystymi

    for(i=3; i<=n;i+=2)
        for(j=i;j<=n;j+=i)         //sito erastotesa
            if(tab[j]==0)
                tab[j]=i;


}

   vector<int> RozkladLiczby::CzynnikiPierwsze(int m){
        vector<int> tablica;
        while(m!=1){
            tablica.push_back(tab[m]);
            m=m/tab[m];
        }

return tablica;

}


////////////////////////END …
Run Code Online (Sandbox Code Playgroud)

c++ linker undefined-reference

0
推荐指数
1
解决办法
174
查看次数

Codeblocks c ++ undefined引用错误,定义了类

嘿伙计们,我前几天问过一些我无法解决的c ++代码问题.我接受了每个人关于如何用c ++创建对象的建议,但现在我得到了未定义的引用错误.我正在使用最新的代码块版本并使用它来编译.我已经读过这是因为在编译过程中没有链接某些文件,这意味着我已经在头文件中定义了类但没有在代码中定义,这让我感到困惑,因为从我的理解(教授示例)我宣布对象.

头文件MathObject.h

class MathObject{
private:
    int num1;
    int num2;

public:
    int sum();
    MathObject(int n, int m);
};
Run Code Online (Sandbox Code Playgroud)

MathObject文件MathObject.cpp

#include <iostream>
#include "MathObject.h"
using namespace std;

MathObject :: MathObject(int n, int m){
    num1 = n;
    num2 = m;
}

int MathObject :: sum(){
    return num1+num2;
}
Run Code Online (Sandbox Code Playgroud)

主文件

#include <iostream>
#include "MathObject.h"
using namespace std;

int main(int args, char *argv[]){
    MathObject *mo = new MathObject(3,4);
    int sum = mo -> sum();

    MathObject mo2(3,4);

    //cout << sum << endl;
    return 0; …
Run Code Online (Sandbox Code Playgroud)

c++ codeblocks linker-errors undefined-reference

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

编译时未定义的引用

我试图使用我已经在.c文件上的.h文件中声明的变量,我给了我一个编译错误:

未定义的引用 var

这是mach.c内容:

#include "machheader.h"

int 
main( void )
{
    var = 1;
    printf("Variable %d\n", var);
}
Run Code Online (Sandbox Code Playgroud)

而我的machheader.h只包含这个:

extern int var;

任何的想法?

c extern undefined-reference variable-declaration

0
推荐指数
1
解决办法
103
查看次数