如何在VS Code中包含自定义头文件

6

能有人解释一下为什么我在代码中包含头文件时,它在VS Code中无法运行吗?(操作系统:Windows 10)

enter image description here

如果我运行这段代码:

#include <iostream>

int main () {

    std::cout << "Hello from C++ " << std::endl;
}

VS Code运行良好,但如果我运行此代码:

#include <iostream>
#include "./lib/Methods.h"

int main () {

    int a = MyMethod(5);
    std::cout << "Hello from C++ " << std::endl;
    std::cout << "a = " << a << std::endl;
}

I get this error:

PS C:\Users\giorg\Documents\Development\Tests\node-addons-test\src> g++ main.cpp
C:\Users\giorg\AppData\Local\Temp\ccIQQEE1.o:main.cpp:(.text+0x1e): undefined reference to `MyMethod(int)' collect2.exe: error: ld returned 1 exit status PS
C:\Users\giorg\Documents\Development\Tests\node-addons-test\src>

lib/Methods.cpp

int MyMethod(int x) {
    return x * 2;
}

lib/Methods.h

int MyMethod(int x);

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "/src/lib"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.17134.0",
            "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx64/x64/cl.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "msvc-x64"
        }
    ],
    "version": 4
}

如果 #include "lib/Methods.h" 能够正常工作,我会选择使用它。 - user4581301
我建议将由VSCode生成和运行的命令行添加到问题中。 - user4581301
undefined reference to MyMethod(int)'` - user6600549
“undefined reference to MyMethod(int)” 是一个链接器错误。所有头文件都已经包含,main.cpp也已经编译通过,但是链接器不知道在哪里找到必须与Methods.h一起使用的Methods.o。这就是我对通用C++知识的极限了。我不知道如何告诉VS Code编译和链接Method.cpp。如果神明眷顾,这将在某个地方有所记录。 - user4581301
是的,我已经解决了,我刚刚发现这是连接器错误。 - user6600549
显示剩余3条评论
1个回答

6

最终,我发现是一个链接器错误

我刚刚将我的项目文件结构扁平化,使其都位于与 main.cpp 相同的根目录中

我只需要运行这个命令 g++ *.cpp


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接