C 无法运行LodePNG示例
根据报告: 程序只需要两个文件即可读取和写入PNG文件:lodepng.cpp和lodepng.h。项目中的其他文件只是示例、单元测试等 我将C 无法运行LodePNG示例,c,C,根据报告: 程序只需要两个文件即可读取和写入PNG文件:lodepng.cpp和lodepng.h。项目中的其他文件只是示例、单元测试等 我将lodepng.h、lodepng.cpp和example_encode.c保存到我的工作文件夹中,按照指示将lodepng.cpp重命名为lodepng.c,并尝试运行example_encode.c。我遇到了很多错误: C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.tex
lodepng.h
、lodepng.cpp
和example_encode.c
保存到我的工作文件夹中,按照指示将lodepng.cpp
重命名为lodepng.c
,并尝试运行example_encode.c
。我遇到了很多错误:
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x30): undefined reference to `lodepng_encode32_file'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x43): undefined reference to `lodepng_error_text'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x98): undefined reference to `lodepng_encode32'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0xb5): undefined reference to `lodepng_save_file'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0xc5): undefined reference to `lodepng_error_text'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x127): undefined reference to `lodepng_state_init'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x15e): undefined reference to `lodepng_encode'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x18a): undefined reference to `lodepng_save_file'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x1a0): undefined reference to `lodepng_error_text'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x1c6): undefined reference to `lodepng_state_cleanup'
所有的错误都是引用函数,这些函数已经在lodepng.h
中定义,它是使用引用的,包括Github链接中给出的示例\u encode.c
文件顶部的“lodepng.h”
,所以我不明白为什么会出现这个问题
还有其他人遇到过这个问题吗?听起来您需要将lodepng.c与示例程序链接起来,如下所示:
$ gcc -o example_encode lodepng.c example_encode.c
关于术语,在C语言中,所有符号都有一个声明和定义。在头文件
lodepng.h
中有函数声明(也称为函数原型),而在源文件(lodepng.c
)中有函数定义。有时声明和定义是同一个,例如,如果函数中有一个局部变量,则声明也是定义。当你正确使用这个术语时,你可能会明白问题所在。谢谢,这很有效。现在假设我将example_encode.c
中的代码合并到CUDAexample.cu
文件中;当从命令提示符调用nvcc
时,是否有相应的方法链接lodepng.c
文件?不熟悉nvcc
或CUDA,但我猜这样做的方法是执行gcc-c lodepng.c
以获取对象文件lodepng.o
,并使用nvcc
将其链接到CUDA程序。