Выполнение программы C ++ на Ma c в коде Visual Studio - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь запустить:

    #include <iostream>

int main() {
    std::cout << "Hello World!";
    return 0;
}

на моей маме c. Я установил C ++ и Code Runner в Visual Studio Code. Но я получаю следующую ошибку:

[Running] cd "/Users/NAME/Documents/Program/C++/" && g++ test.cpp -o test && "/Users/NAME/Documents/Program/C++/"test Undefined symbols for architecture x86_64:   "_main", referenced from:
     implicit entry/start for main executable ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

[Done] exited with code=1 in 0.081 seconds

1 Ответ

0 голосов
/ 18 марта 2020

Чтобы создать и запустить helloWorld. cpp или любой другой проект, вам необходимо сначала создать параметр сборки.

Учитывая, что вы уже создали файл helloworld.cpp, затем выполните следующие действия:

  1. вы создадите файл задач. json, чтобы сообщить VS Code, как собирать (компилировать) программу. Эта задача вызовет Clang C ++ (или g ++, если вы хотите собрать компилятором g cc) для создания исполняемого файла из исходного кода.
  2. Важно, чтобы helloworld был открыт. cpp в редактора, поскольку следующий шаг использует активный файл в редакторе в качестве контекста для создания задачи сборки на следующем шаге.
  3. В главном меню выберите «Терминал»> «Настроить задачу сборки по умолчанию». Появится раскрывающийся список с различными предопределенными задачами сборки для компиляторов, которые VS Code обнаружил на вашем компьютере. Выберите C/C++ clang++ build active file (или g ++, если вы хотите собрать с помощью g cc), чтобы создать файл, который в данный момент отображается (активным) в редакторе.
  4. Это создаст файл задач. json в папку .vscode и откройте ее в редакторе.

Мой tasks.json например выглядит так (я использовал g ++)

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                "-std=c++17",
                "-stdlib=libc++",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
Go назад к helloworld.cpp. Поскольку мы хотим построить helloworld.cpp, важно, чтобы этот файл был тем, который активен в редакторе для следующего шага. Чтобы запустить задачу сборки, определенную вами в tasks.json, нажмите ⇧⌘ B или в главном меню терминала выберите Run Build Task. Создайте новый терминал с помощью кнопки +, и у вас будет новый терминал с папкой helloworld в качестве рабочего каталога. Запустите ls, и вы должны увидеть исполняемый helloworld вместе с файлом отладки (helloworld.dSYM). Вы можете запустить helloworld в терминале, набрав ./helloworld

Примечание: это краткий обзор того, что вы видите в официальной документации здесь . вы можете заменить clang на g cc, чтобы скомпилировать и собрать с g cc.

Вывод терминала:

  • clang ++
xecuting task: /usr/bin/clang++ -std=c++17 -stdlib=libc++ -g /Users/Projects/test/helloworld.cpp -o /Users/Projects/test/helloworld <
  • г ++
Executing task: /usr/bin/g++ -std=c++17 -stdlib=libc++ -g /Users/Projects/test/helloworld.cpp -o /Users/Projects/test/helloworld <
...