【发布时间】:2009-06-02 21:00:42
【问题描述】:
我从 libjpeg 示例中复制了这段代码,并将其传递给标准文件;
FILE *soureFile;
if ((soureFile = fopen(sourceFilename, "rb")) == NULL)
{
fprintf(stderr, "can't open %s\n", sourceFilename);
exit(1);
}
jpeg_stdio_src(&jpegDecompress, soureFile);
jpeg_read_header(&jpegDecompress, true);
它会导致文件指针不包含任何信息,因此会在最后一行中断访问冲突。 有什么想法吗?
编辑:根据 Tobias 的建议,fopen 确实可以正常打开文件,但 jpeg_read_header 又因访问冲突而失败。
【问题讨论】:
-
您确定其余代码没有错误,并且该文件包含您认为的内容吗?
-
我还是不清楚。 fopen() 上面的代码是否返回NULL?
-
如果 sourceFile != NULL,则 fopen 成功。您能否尝试从 sourceFile 中读取以排除 fopen 部分(例如使用 fgetc)。
-
程序员不应该使用 FILE 结构的各个字段。它包含错误指针这一事实并不一定意味着结构已损坏,而是这些字段在您阅读它时并不打算使用或用作指针。
-
什么编译器用于 dll 和您的代码?也许使用相同的编译器可以解决您将 FILE 指针传输到 dll 的问题。