标签: undefined-reference

Qt和C++ - 对槽的未定义引用

我在Qt中有一个插槽的构建错误.我有一个有公共插槽的课程:

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

在这个类的构造函数中我做:

this->connect( ui->textFrom, SIGNAL(returnPressed()),
               this, SLOT(doSomething()) );
Run Code Online (Sandbox Code Playgroud)

我有QLineEdit - textFrom对象.构建错误是

../moc_mainwindow.cpp:66: undefined reference to `MainWindow::doSomething()'
Run Code Online (Sandbox Code Playgroud)

:-1:错误:collect2:ld返回1退出状态

请帮帮我 (:

c++ qt signals-slots undefined-reference

6
推荐指数
1
解决办法
6511
查看次数

D2 gdc链接错误 - 未定义对`_D3std6stdint12__ModuleInfoZ的引用

我正在使用https://bitbucket.org/goshawk/gdc/downloads/gcc-4.5.2-tdm-1-gdc-r575-20110723.zip与TDM GCC 4.5.2 in -v2模式来构建DLL.在我做的其中一个模块中import std.stdint.所以我认为我应该链接libgphobos2来解决这个问题,但它给了我更多的错误:

c:/mingw32/bin/../lib/gcc/mingw32/4.5.2/../../../libgphobos2.a(thread.o): In function `D4core6thread6Thread6__ctorMFZC4core6thread6Thread':
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:1363: undefined reference to `__emutls_v._tlsend'
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:1363: undefined reference to `__emutls_v._tlsstart'
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:1363: undefined reference to `__emutls_v._tlsstart'
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:1363: undefined reference to `__emutls_v._tlsend'
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:1363: undefined reference to `__emutls_v._tlsstart'
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:1363: undefined reference to `__emutls_v._tlsstart'
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:1363: undefined reference to `__emutls_v._tlsend'
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:1363: undefined reference to `__emutls_v._tlsstart'
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:1363: undefined reference to `__emutls_v._tlsstart'
c:/mingw32/bin/../lib/gcc/mingw32/4.5.2/../../../libgphobos2.a(thread.o): In function `thread_entryPoint@4':
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:173: undefined reference to `__emutls_v._tlsend'
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:173: undefined reference to `__emutls_v._tlsstart'
C:\crossdev\gdc\v2\build\mingw32\libphobos/../../../gcc-4.5.2/libphobos/core/thread.d:173: undefined reference to `__emutls_v._tlsstart'
c:/mingw32/bin/../lib/gcc/mingw32/4.5.2/../../../libgphobos2.a(thread.o): In …
Run Code Online (Sandbox Code Playgroud)

d undefined-reference gdc

6
推荐指数
1
解决办法
1179
查看次数

ubuntu和libcap(功能)未定义的引用

我正在尝试在ubuntu 10.10上编译以下最小C代码:

#include <sys/capability.h>

void main(void)
{
        cap_t cap;
        cap = cap_get_proc();
}
Run Code Online (Sandbox Code Playgroud)

gcc -lcap test.c它给我以下错误:

/tmp/ccCQFyXS.o: In function `main':
test.c:(.text+0x9): undefined reference to `cap_get_proc'
collect2: ld a retourné 1 code d'état d'exécution
Run Code Online (Sandbox Code Playgroud)

我安装了libcap2-dev和libcap2-bin,版本2.21

ls /lib/libcap.*
/lib/libcap.a  /lib/libcap.so  /lib/libcap.so.2  /lib/libcap.so.2.21
Run Code Online (Sandbox Code Playgroud)

具有相同gcc命令的相同代码在arch和gentoo上成功构建

我该怎么做才能让它在ubuntu上构建?

c ubuntu undefined-reference linux-capabilities

6
推荐指数
1
解决办法
9304
查看次数

cmake undefined对函数的引用

下面的项目结构是一个简化的例子.我试图将其归结为最少量的文件来重现我的问题.

.
??? CMakeLists.txt
??? subdir1
?   ??? CMakeLists.txt
?   ??? subsubdir1
?       ??? CMakeLists.txt
?       ??? Example.cpp
?       ??? Example.h
??? subdir2
    ??? CMakeLists.txt
    ??? main.cpp
    ??? subsubdir1
        ??? CMakeLists.txt
        ??? ExampleCreator.cpp
        ??? ExampleCreator.h
Run Code Online (Sandbox Code Playgroud)

./CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(test)

macro(add_sources)
    file (RELATIVE_PATH _relPath "${CMAKE_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
    foreach (_src ${ARGN})
        if (_relPath)
            list (APPEND SRCS "${_relPath}/${_src}")
        else()
            list (APPEND SRCS "${_src}")
        endif()
    endforeach()
    if (_relPath)
        # propagate SRCS to parent directory
        set (SRCS ${SRCS} PARENT_SCOPE)
    endif()
endmacro()

add_subdirectory(subdir1)
add_subdirectory(subdir2)

add_executable(test ${SRCS})
Run Code Online (Sandbox Code Playgroud)

subdir1 …

cmake ld undefined-reference

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

将CUDA静态或共享库与gcc链接的未定义引用错误

gcc和CUDA问题

嗨,

我编译了一个CUDA共享库,但无法将其与使用它的主程序链接.我用gcc编译主程序.

代码:

simplemain.c

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



    void fcudadriver();

    int main()
    {
      printf("Main \n");
      fcudadriver();
      return 0;
    }
Run Code Online (Sandbox Code Playgroud)

test.cu

    __global__ void fcuda()
    {
    }

    void fcudadriver()
    {
      fcuda<<<1,1>>>();
    }
Run Code Online (Sandbox Code Playgroud)

我编译test.cu为 - >它的工作原理

    nvcc --compiler-options '-fPIC' -o libtest.so --shared test.cu
Run Code Online (Sandbox Code Playgroud)

我编译simplemain.c为--->它给出错误:(

    gcc simplemain.c -L. -ltest
    /tmp/ccHnB4Vh.o:simplemain.c:function main: error: undefined reference to 'fcudadriver'
    collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

c cuda shared-libraries undefined-reference nvcc

6
推荐指数
1
解决办法
2588
查看次数

对类的'typeinfo'的未定义引用和对'class for class'的未定义引用

我正在处理C++中的继承.我想编写一个程序来加减两个数组.继承我的代码:

#include <iostream>
#include <cmath>
#include <sstream>
using namespace std;

class root
{
    protected :

            int size;
            double *array;

    public :

        virtual ~root() {}
        virtual root* add(const root&) = 0;
        virtual root* sub(const root&) = 0;
        virtual istream& in(istream&, root&) = 0;

        virtual int getSize() const = 0;
        virtual void setSize(int);
        virtual int getAt(int) const = 0;
};

class aa: public root
{

    public :

        aa();
        aa(int);
        aa(const aa&);
        root* add(const root& a);
        root* sub(const root& a);
        istream& in(istream&, root&){} …
Run Code Online (Sandbox Code Playgroud)

c++ vtable undefined-reference

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

MingW静态库链接 - SFML 2.1

我试图让SFML 2.1与MingW一起工作,但这会导致问题.

我在MingW编译器中的编译行是:

g++ -ID:\SFML-2.1\include -LD:\SFML-2.1\lib main.cpp -lsfml-graphics -lsfml-window -lsfml-system
Run Code Online (Sandbox Code Playgroud)

我正在尝试链接.a文件(这是否意味着我应该添加soemthing to eh compile line?).

代码如下:

#include <SFML/Graphics.hpp>

int main()
{
// create the window
sf::RenderWindow window(sf::VideoMode(800, 600), "My window");

// run the program as long as the window is open
while (window.isOpen())
{
    // check all the window's events that were triggered since the last iteration of      the loop
    sf::Event event;
    while (window.pollEvent(event))
    {
        // "close requested" event: we close the window
        if (event.type == sf::Event::Closed)
            window.close();
    }

    // …
Run Code Online (Sandbox Code Playgroud)

c++ mingw undefined-reference

6
推荐指数
1
解决办法
3459
查看次数

为什么要尝试两次找到析构函数?

我正在尝试以下代码:

GeneralTemplate.h

#ifndef _GENERATEMPLATE_H_
#define _GENERATEMPLATE_H_

#include <iostream>

template <class T>
class GeneralTemplate
{
  public:
  GeneralTemplate();
  GeneralTemplate(const GeneralTemplate &g);

  ~GeneralTemplate();

  GeneralTemplate& operator= (GeneralTemplate const& g);

  template <class M>
  void arbitraryFunction(const M &m);
};

#endif
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include "GeneralTemplate.h"

#include <iostream>

int main()
{
    GeneralTemplate<int> gInt;
    gInt.arbitraryFunction(2.3);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

请注意,我没有任何类模板的成员函数的实现.但那不是问题.我知道怎么做!如果我尝试编译main.cpp,我应该得到一个链接错误,这就是我得到的.问题是为什么它试图找到两次析构函数(下面的两行错误).

$g++ main.cpp 
/tmp/cckrdPCs.o: In function `main':
main.cpp:(.text+0x13): undefined reference to `GeneralTemplate<int>::GeneralTemplate()'
main.cpp:(.text+0x34): undefined reference to `void GeneralTemplate<int>::arbitraryFunction<double>(double const&)'
main.cpp:(.text+0x45): undefined reference to `GeneralTemplate<int>::~GeneralTemplate()'
main.cpp:(.text+0x61): undefined reference to `GeneralTemplate<int>::~GeneralTemplate()'
collect2: ld returned …
Run Code Online (Sandbox Code Playgroud)

c++ templates undefined-reference

6
推荐指数
1
解决办法
125
查看次数

使用LLVM传递添加内在函数

我使用LLVM传递为输入代码添加了内在函数.我能够看到内部调用,但我无法弄清楚如何将代码编译到我的目标体系结构(x86_64).我正在运行以下命令:

clang++ $(llvm-config --ldflags --libs all) ff.s -o foo
Run Code Online (Sandbox Code Playgroud)

但链接器抱怨未定义的引用:

/tmp/ff-2ada42.o: In function `fact(unsigned int)':
/home/rubens/Desktop/ff.cpp:9: undefined reference to `llvm.x86.sse3.mwait.i32.i32'
/tmp/ff-2ada42.o: In function `fib(unsigned int)':
/home/rubens/Desktop/ff.cpp:16: undefined reference to `llvm.x86.sse3.mwait.i32.i32'
/home/rubens/Desktop/ff.cpp:16: undefined reference to `llvm.x86.sse3.mwait.i32.i32'
/home/rubens/Desktop/ff.cpp:16: undefined reference to `llvm.x86.sse3.mwait.i32.i32'
Run Code Online (Sandbox Code Playgroud)

尽管使用llvm-config中的ldflags,但编译仍未进行.关于应该如何正确编译代码的任何想法?

要生成汇编代码,我已完成以下操作:

# Generating optimized code
clang++ $(llvm-config --cxxflags) -emit-llvm -c ff.cpp -o ff.bc
opt ff.bc -load path/to/mypass.so -mypass > opt_ff.bc

# Generating assembly
llc opt_ff.bc -o ff.s
Run Code Online (Sandbox Code Playgroud)

我目前正在使用llvm版本3.4.2; clang版本3.4.2(标签/ RELEASE_34/dot2-final); gcc版本4.9.2(GCC); 和Linux 3.17.2-1-ARCH x86_64.


编辑:添加内在的IR:

文件〜/ llvm/include/llvm/IR/IntrinsicsX86.td:

...
589 …
Run Code Online (Sandbox Code Playgroud)

c++ linker llvm undefined-reference llvm-ir

6
推荐指数
1
解决办法
1724
查看次数

OpenMp任务:不能通过引用传递参数

g++ -fopenmp main.cpp抱怨未定义的引用std::vector.如何解决这个问题?

libomp-dev在Ubuntu上安装了这个包.

main.cpp中

#include<vector>
#include<iostream>

template<typename T, typename A>
T recursiveSumBody(std::vector<T, A> &vec) {
    T sum = 0;
    #pragma omp task shared(sum)
    {
        sum = recursiveSumBody(vec);
    }
    return vec[0];
}

int main() {
    std::vector<int> a;
    recursiveSumBody(a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

未定义的参考文献

/tmp/ccTDECNm.o: In function `int recursiveSumBody<int, std::allocator<int> >(std::vector<int, std::allocator<int> >&) [clone ._omp_cpyfn.1]':
main.cpp:(.text+0x148): undefined reference to `std::vector<int, std::allocator<int> >::vector(std::vector<int, std::allocator<int> > const&)'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

c++ openmp undefined-reference

6
推荐指数
1
解决办法
721
查看次数