Tag: 链接器错误

将c源代码转换为dll

我正在尝试运行使用C编写的代码,这是用于对话板dmv 960A 4T1pci 。 我试图将该代码转换为DLL但我面临的34个错误几乎相同,这里是它们的列表: Linking… Creating library Debug/drivendll.lib and object Debug/drivendll.exp drivendll.obj : error LNK2001: unresolved external symbol _sr_waitevt drivendll.obj : error LNK2001: unresolved external symbol _gc_CCLibStatusEx drivendll.obj : error LNK2001: unresolved external symbol _gc_Start drivendll.obj : error LNK2001: unresolved external symbol _sr_setparm drivendll.obj : error LNK2001: unresolved external symbol _gc_DropCall drivendll.obj : error […]

即使使用-l也找不到静态库符号

我有一个静态库,liborc-0.4.a没有共享库。 我有另一个库,libschroedinger-1.0.a(没有共享)依赖于liborc-0.4.a中的符号。 如果我在liborc-0.4.a上运行nm,则orc_init等符号显示为T(表示已定义)。 我使用命令行标志-lorc-0.4构建了libschroedinger-1.0.a,所以它看到符号并且没问题。 但是,现在我有一个小的可执行文件,它依赖于libschroedinger-1.0.a。 编译很好,但是当我运行链接器时 gcc -lschroedinger-1.0 -lorc-0.4 -o output input.o 它会出现以下错误: /usr/local/lib/libschroedinger-1.0.a(libschroedinger_1.0_la-schro.o):schro.c:(.text+0x21): undefined reference to `orc_init’

在ubuntu 12.04中链接gtk2应用程序中的错误

我有一个C GUI应用程序(在GTK + 2.0中 ),我用来链接如下: gcc -O2 -std=gnu99 -pipe -Wall -lm `pkg-congig gtk+-2.0 `pkg-config –libs gtk+-2.0` -o exec ao bo co 最终转换成: gcc -O2 -std=gnu99 -pipe -Wall -lm -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64 linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 […]

链接器命令失败,退出代码1在Xcode中

我在Xcode中编写C程序,我遇到了这个问题: ld: 1 duplicate symbol for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 有什么想法解决它吗? 注意:我昨天刚刚将我的操作系统更新到Mountain Lion。

当我在c中编译程序时,为什么会得到一个未定义的引用(例如`glColor3f’)?

我正在编译一个在ubuntu(linux)中使用opengl的示例程序。 代码的简短片段如下: #include #include void createBox( GLfloat centroX, GLfloat centroY, GLfloat corR, GLfloat corG, GLfloat corB ) { /* Cor */ glColor3f( corR, corG, corB ); 我安装了在opengl(在ubuntu中)开发的所有软件包,即: freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev 我像这样编译示例: gcc -lGL CG_ex04.c -o main 我得到以下内容 /tmp/ccDWmJDZ.o: In function `createBox’: CG_ex04.c:(.text+0x31): undefined reference to `glColor3f’ 和同一行的其他错误。 有谁知道我做错了什么? Thanx提前获得任何帮助。

ld:对符号’log2 @@ GLIBC_2.2.5’的未定义引用

什么错了 for (level = 1; level <= log2((double)size); level++) ^ 看起来像使用log2()但有什么不对? 我实际上正在使用它与OpenMPI代码,但注释这一行修复了一些事情。 完整来源 ( http://pastie.org/7559178 )见第40行 [jiewmeng@JM Assign3]$ mpicc -o cpi cpi.c && mpirun -np 16 cpi /usr/bin/ld: /tmp/cca9x4he.o: undefined reference to symbol ‘log2@@GLIBC_2.2.5’ /usr/bin/ld: note: ‘log2@@GLIBC_2.2.5’ is defined in DSO /usr/lib/libm.so.6 so try adding it to the linker command line /usr/lib/libm.so.6: could not read […]

尝试一起编译多个CUDA文件时链接错误LNK2005

我有一个工作正常的CUDA程序,但目前所有程序都写在一个文件中。 我想将这个大文件拆分成几个较小的文件,以便更容易维护和导航。 新结构是: foo.cuh foo.cu bar.cuh bar.cu main.cu .cuh头文件包含结构和函数原型, .cu文件包含函数定义(像往常一样)。 主文件包括bar.cuh , bar.cu包括foo.cuh 。 所有.cu文件都包含cutil_inline.h,以便能够使用CUDA函数。 因此: // main.cu #include “bar.cuh” #include int main() […] // bar.cu #include “bar.cuh” #include “foo.cuh” #include […] // foo.cu #include “foo.cuh” #include […] 问题是当我用这个新结构编译我的Visual Studio 2008项目时,我遇到了大量的链接错误: error LNK2005: “void __cdecl __cutilBankChecker(unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,char *,int,char *,int)” (?__cutilBankChecker@@YAXIIIIIIPADH0H@Z) […]

链接…链接:致命错误LNK1181:无法打开输入文件’libgsl.a’

我正在使用Rob Hess的 SIFT算法代码,该代码在Windows中使用OpenCV库。 我正在将visual studio 2008作为IDE。 当我运行用于图像匹配的程序,其中Debug作为VS中的解决方案配置没有问题,一切正常。 但是,当我将解决方案配置更改为发布时,它会产生链接错误。 错误是: 链接…链接:致命错误LNK1181:无法打开输入文件’libgsl.a’ 有人可以解释我的原因,并告诉我如何解决这个问题。 谢谢

CUDA __device__未解析的外部函数

我试图了解如何在单独的头文件中解耦CUDA __device__代码。 我有三个文件。 文件:1:int2.cuh #ifndef INT2_H_ #define INT2_H_ #include “cuda.h” #include “cuda_runtime.h” #include “device_launch_parameters.h” __global__ void kernel(); __device__ int k2(int k); int launchKernel(int dim); #endif /* INT2_H_ */ 文件2:int2.cu #include “int2.cuh” #include “cstdio” __global__ void kernel() { int tid = threadIdx.x; printf(“%d\n”, k2(tid)); } __device__ int k2(int i) { return i * i; } int […]

未定义的引用`kill’

我在C中开发了一个ARM7嵌入式系统的应用程序。现在我想用C ++编译和链接它以便使用一些C ++特性。 为此,我使用的是mipsel-elf-g++而不是mipsel-elf-gcc 。 我可以使用mipsel-elf-g++成功编译我的代码,但在链接步骤中我得到错误: /opt/mipsel/lib/gcc/mipsel-elf/3.4.6/../../../../mipsel-elf/lib/libc.a(lib_a-abort.o):在函数“`abort’: /cygdrive/d/Files/cross/mips/newlib-1.15.0/newlib/libc/stdlib/abort.c:63: undefined reference to d/Files/cross/mips/newlib-1.15.0/newlib/libc/stdlib/abort.c “`abort’: /cygdrive/d/Files/cross/mips/newlib-1.15.0/newlib/libc/stdlib/abort.c:63: undefined reference to _exit’` /opt/mipsel/lib/gcc/mipsel-elf/3.4.6/../../../../mipsel-elf/lib/libc.a(lib_a-signalr.o):在函数“`_kill_r’: /cygdrive/d/Files/cross/mips/newlib-1.15.0/newlib/libc/reent/signalr.c:61: undefined reference to kill’` collect2:ld返回1退出状态 我搜索了这个问题,发现我应该实现自己的_exit和kill函数,所以我将这些代码添加到我的项目中: void _exit(int code) { while(1); } int _DEFUN (kill, (pid, sig), int pid _AND int sig) { if(pid == __MYPID) _exit(sig); return 0; } 通过添加这两个函数,对“_exit”错误的未定义引用是固定的,但对“kill”错误的未定义引用仍然存在。 我该怎么做才能解决这个问题?