Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 无法运行LodePNG示例_C - Fatal编程技术网

C 无法运行LodePNG示例

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

根据报告:

程序只需要两个文件即可读取和写入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:(.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
中的代码合并到CUDA
example.cu
文件中;当从命令提示符调用
nvcc
时,是否有相应的方法链接
lodepng.c
文件?不熟悉
nvcc
或CUDA,但我猜这样做的方法是执行
gcc-c lodepng.c
以获取对象文件
lodepng.o
,并使用
nvcc
将其链接到CUDA程序。