Выпуск сборки C ++ Project."Не удалось найти 'FILEPATH \ Debug \ main.obj'. FILENAME был создан с / DEBUG: FASTLINK - PullRequest
0 голосов
/ 26 ноября 2018

Я создаю конвертер ASCII в VS2017 в C ++, используя библиотеку SFML.Я считаю, что моя основополагающая логика правильна, и что в синтаксисе вещей не должно быть никаких ошибок, но я несколько новичок в VS и собираю с внешними включениями.

Когда я пытаюсьсборка моей программы для отладки, VS выдает эту ошибку:

Не удалось найти 'FILEPATH \ Debug \ main.obj'.FILENAME был создан с помощью / DEBUG: FASTLINK, для которого требуются файлы объектов для отладки.

Последующие сбои будут регистрироваться на панели «Отладка» окна «Вывод».

Я полагаю, что настроил SFMLправильно - для справки, я следовал этого урока от "Hilze Vonck".

Большинство распространенных решений указывают на то, чтобы убедиться, что ваш выходной файл компоновщика равен $ (OutDir) $ (TargetName)$ (TargetExt).Шахта установлена ​​как таковая.Ни одно из найденных решений не дало никаких результатов.

При некотором редактировании папка моего проекта сохраняется в этом месте:

E: \ Google Drive \ College \XXXXXX XXXX X \ CGT XXX \ CGTXXX_XXXXXXX_XXXXX_Final_Project \ ASCII_Converter

Не уверен, если это что-то изменит, но вы идете.


Что касается файла I 'я пытаюсь собрать, опять же, не уверен, что это полезно для решения проблемы, но вот она:

//CGT *** Final Project: Image to ASCII Converter
//J**** W******
//Pass 01


//Researching into how this would be done led me to believe that including some sort
//of external framework might be the way to go. SFML seemed to be a popular one and
//I'd used it once for a project back at Butler. Might not need it, but research leads
//me to believe it'll be useful.
#include <SFML/Graphics.hpp>

//Future me, here's a link to the Image Classes:
//https://www.sfml-dev.org/documentation/2.5.1/classsf_1_1Image.php

#include <string>
#include <iostream>
//Going to need to read in files. Hence the <fstream>
#include <fstream>
#include <time.h>

using namespace std;
//For SFML
using namespace sf;



//This will assign the appropriate ASCII character for the grayscale intensity/RGB of
//each pixel. Works as of now. Bless.
char assignAsciiChar(int grayscaleValue, string grayscaleRange) {
    //God bless the TA's. (int) is a thing I can do. Horray.
    return grayscaleRange[(int)(grayscaleValue/255.f*grayscaleRange.size())];
}


//I think I'll only need one function, seeing as I don't want to make a super mega loop
int main()
{
    //[pixelSize]: Will allow for variable resolutions by sampling the grayscale value of
    //a user-defined number of pixels. 1x1, 2x2, 4x4, 8x8. You get the deal, future me.


    //[avalibleCharacters]: I'll make a string full of characters that can be used within
    //this ASCII piece going from super white to super dark. That way I don't have to
    //account for allpotential characters.

    //[inputLocation & outputLocation]: Strings defining the filepath of the image to
    //be converted and the .txt file to be output

    //[ASCII]: Output string for the ASCII art file.

    //[picture & grayscalePicture]: SFML Image types that represent the imported image
    //and the image converted to grayscale respectively.

    //[grayscaleDownscaledPicture]: Represents the grayscaled image downsized by
    //user-specified pixel size. This is the imagedata that will be converted to ASCII.

    //[grayscaleRange]: A string that contains the standard greyscale ramp.
    //Referenced http://paulbourke.net/dataformats/asciiart/
    int pixelSizeX = 1;
    int pixelSizeY = 2;
    int gsValue = 0;
    string inputLocation;
    string outputLocation;
    //Presently just a static ramp of values. Maybe I'll expand to allow user input?
    string grayscaleRange = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,^`'. ";
    string ASCII;
    Image picture;
    Image grayscalePicture(picture);
    Image grayscaleDownscaledPicture(picture);

    cout << "Give input filepath for the image you'd like to convert:  ";
    cin >> inputLocation;
    cout << "Give output filepath where you'd like file to be saved:  ";
    cin >> outputLocation;
    cout << "ASCII character represents \"x by x\" pixels (give \"x\"):  ";
    cin >> pixelSizeX;

    //I think this is correct syntax to load with SFML.
    picture.loadFromFile(inputLocation);

    double rCon = .213;
    double gCon = .715;
    double bCon = .072;

    //Conversion from color image to black and white image
    //OH LORD I THINK THIS WORKS
    for (int h = 0; h < picture.getSize().x; h++) {
        for (int i = 0; i < picture.getSize().y; i++) {
            //ACTUAL CONVERSION TO GO HERE
            //WILL LIKELY USE getPixel()
            //Apparently need double colon? Don't know why we need to scope it, but that's what works. Thanks TAs.
            grayscalePicture.setPixel(h, i, Color::Color(picture.getPixel(h, i).r*rCon + picture.getPixel(h, i).g*gCon + picture.getPixel(h, i).b*bCon, picture.getPixel(h, i).r*rCon + picture.getPixel(h, i).g*gCon + picture.getPixel(h, i).b*bCon, picture.getPixel(h, i).r*rCon + picture.getPixel(h, i).g*gCon + picture.getPixel(h, i).b*bCon));
        }
    }

    //Sizing down image as per the user specified pixelSize
    //Holy crap this is sloppy. Well, it *works*. Maybe shoot for not having so many nested for loops.
    pixelSizeY = 2 * pixelSizeX;
    for (int j = 0; j < picture.getSize().x; j += pixelSizeX) {
        for (int k = 0; k < picture.getSize().y; k += pixelSizeY) {
            for (int l = 0; l < pixelSizeX; l++) {
                for (int m = 0; m < pixelSizeY; m++) {
                    gsValue += grayscalePicture.getPixel(j*l, k*m).r;
                }
            }
            //Ask if /= is good syntax
            gsValue /= pixelSizeX + pixelSizeX + 1;
            for (int n = 0; n < pixelSizeX; n++) {
                for (int o = 0; o < pixelSizeY; o++) {
                    grayscaleDownscaledPicture.setPixel(j + n, k + o, Color::Color(gsValue, gsValue, gsValue));
                }
            }
        }
    }

    //Conversion from bwPicture to ASCII
    int tempASCII = 0;
    for (int p = 0; p < grayscaleDownscaledPicture.getSize().y; p += pixelSizeY) {
        for (int q = 0; q < grayscaleDownscaledPicture.getSize().x; q += pixelSizeX) {
            ASCII += assignAsciiChar(grayscaleDownscaledPicture.getPixel(p, q).r, grayscaleRange);
        }
        //Alternate way to make a new line. Neat. Remember this, future me.
        ASCII += "\n";
        tempASCII++;
    }
    //Output to .txt file
    ofstream output(outputLocation);
    cout << "ASCCI art saved in this filepath:  " << outputLocation;
    cout << endl;
    cout << "Press a key to close application.";
    cin.get;
    cin.get;
    return 0;
}

Я хотел бы предположить, что проблема связана со средой VS, учитывая конкретныеошибка брошена.Но также вероятно, что мой код оказался большой кучей мусора.

...