【问题标题】:Why does this code fail to read Blender's .obj file?为什么这段代码无法读取 Blender 的 .obj 文件?
【发布时间】:2014-08-22 21:44:14
【问题描述】:

您好,我正在尝试读取使用 Blender 创建的 Wavefront 文件。我将此文件的副本放入解决方案资源管理器中。当我第一次尝试编译时,我收到以下消息:

致命错误 LNK1107:文件无效或损坏:无法在 0x 处读取...

编译器似乎将 Blender 的 .obj 文件与其他也使用 .obj 结尾的格式混淆了。解决方案是在其属性中将文件从构建过程中排除。

现在应用程序可以编译,但没有像我预期的那样显示数据。不确定这是否是代码问题。

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <string>
using namespace std;

void ReadPrintFile(string _fileName)
{
    std::string line;
    std::ifstream fileStream (_fileName);   

    if (fileStream.is_open())
    {
        while (getline(fileStream,line))
        {
            cout << line << '\n';
        }
        fileStream.close();
    }
    else
    {
        cout << "Unable to read file";
    }
}

int _tmain(int argc, _TCHAR* argv[])
{

    ReadPrintFile("Drone.obj");
    std::cin.get();

    return 0;
}

代码不会跳转到 else 语句。文件流似乎只是空的,我直接转发到cin.get(); 语句。我知道有很多关于如何在 C++ 中解析 .OBJ 的教程,但我想了解。

【问题讨论】:

  • 仅供参考:“也使用 .obj 结尾的其他格式”,当然,编译器会从您的 C 代码生成 OBJ file。另外仅供参考:虽然是一个有趣的故事(保证自己有一个好的答案),但它似乎与其他故事无关。
  • @Jongware 仅供参考:我是 C++ 新手,不确定这是代码问题,还是我只需要以不同的方式添加文件。希望提供尽可能多的信息。
  • 如果您的 .obj 文件存在且为空,则可以复制您描述的行为(“代码不会跳转到 else 语句”)。

标签: c++ iostream wavefront


【解决方案1】:

诀窍不是将文件复制到解决方案资源管理器中,而是复制到项目文件夹中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 2012-05-31
    • 2022-12-31
    • 1970-01-01
    • 2022-08-15
    • 2021-09-26
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多