Попытка запустить отдельные классы в vs code на c

#c #class #visual-studio-code

#c #класс #visual-studio-code

Вопрос:

Я новичок в vs code, после того, как ранее немного использовал atom. Я работаю на c с программой, в которой есть несколько классов в отдельных файлах. Я уже установил расширение c / c , но столкнулся с проблемой. Когда я пытаюсь запустить программу со всеми включенными в нее файлами, она показывает мне следующую ошибку:

main.cpp :(.text 0x1f): неопределенная ссылка на `Car:: sayHello ()’ collect2: ошибка: ld вернул 1 статус выхода. код довольно простой.

  #include <iostream>
 #include "Car.h"

 using namespace std;
 int main(){
     Car c;
     c.sayHello();
      cout << "Hello world";
      return 0;
  }
 

Из того, что я помню из atom, выбор всех файлов и их запуск решат проблему, которая, я думаю, такая же, как выполнение следующей команды в терминале:

  g   Car.cpp Car.h main.cpp -o Classes
 

Я пробовал это в vs code, и проблема, похоже, появляется снова. Помощь очень ценится.

Комментарии:

1. Попробуйте ввести main.cpp before Car.cpp в командной строке compile / link. И не помещайте Car.h туда.

Ответ №1:

Так что, если у кого-то еще может возникнуть такая же проблема, как у меня в будущем. Проблема заключалась в том, что я объявил конструктор и деструктор в заголовочном файле, но я не определил их в файле .cpp, после этого программа, похоже, работает хорошо. Также, как упоминал Фред, Car.h является избыточным для упоминания в процессе компиляции, но в любом случае программа будет успешно скомпилирована, даже если она используется.

Ответ №2:

Итак, у меня была та же проблема, но я понял это благодаря этой ссылке. Следуйте инструкциям и протестируйте его, и он должен работать. Существуют и другие способы решения этой проблемы, основанные на ваших предпочтениях, которые показаны на этом веб-сайте. Однако я заметил, что как только вы добавляете несколько папок в свою рабочую область, компиляция любого main.exe файл, который вам нужен, становится сложным, поскольку вы используете arg ${workspaceFolder}\*.cpp для компиляции всех cpp-файлов в папке рабочей области. Один из способов решить эту проблему — создать несколько рабочих пространств, но если кто-нибудь знает более эффективный способ сделать это, пожалуйста, дайте мне знать.