我在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对象.构建错误是
Run Code Online (Sandbox Code Playgroud)../moc_mainwindow.cpp:66: undefined reference to `MainWindow::doSomething()':-1:错误:collect2:ld返回1退出状态
请帮帮我 (:
我正在使用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) 我正在尝试在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上构建?
下面的项目结构是一个简化的例子.我试图将其归结为最少量的文件来重现我的问题.
.
??? 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)
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)
嗨,
我编译了一个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++中的继承.我想编写一个程序来加减两个数组.继承我的代码:
#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) 我试图让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) 我正在尝试以下代码:
#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)
#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) 我使用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) 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)