G ++ не входит в комплект. cpp Файлы при компиляции - PullRequest
0 голосов
/ 05 августа 2020

Inkey.cpp и Key.cpp находятся в одном каталоге, / root / sr c.

Compile.bat находится в / root.

Когда я запускаю Compile.bat, мне выдается сообщение «Ключ. cpp: нет такого файла или каталога».

Заранее благодарим за любой совет.

Inkey. cpp

#include <iostream>
#include <Key.cpp>

using namespace std;

int main(int argc, char *argv[]) {
    cout << "Hello from InKey" << endl;

    Key key1;

    return 0;
}

Ключ. cpp

#include <iostream>

using namespace std;

class Key {
    public:
        Key() {
            cout << "New Key instantiated." << endl;
        };
};

Compile.bat

@ECHO OFF

g++ "src/Inkey.cpp" -o "out/InKey.exe"

"out\Inkey.exe"

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Прежде всего, переименуйте Key.cpp в Key.h. Поместите декларацию в Key.h. Затем введите определение в Key.cpp (не забудьте указать здесь Key.h). Затем включите свой Key.h во все файлы, используя объекты Key. Теперь скомпилируйте их с помощью g++ -o filename.out file1.cpp file2.cpp -O3 -Wall Кроме того, научитесь использовать шаблонный код

PS, как предложил @SoronelHaetir, используйте "" для включения пользовательских файлов заголовков

1 голос
/ 05 августа 2020

Найдите разницу между #include "filename" и #include <filename>. Первый начинается с текущего каталога, второй использует путь поиска (или набор таких путей). (Обратите внимание, что #include "filename" будет использовать стратегию поиска #include <filename>, если файл не будет найден, начиная с текущего каталога).

Кроме того, вы обычно не включаете файлы. cpp, вы передаете их как отдельные аргументы для компилятора, а затем объединить их с помощью компоновщика.

...