为什么即使两个文件都在同一目录中,我也会收到链接器错误?

火车1855

我正在做一个涉及三维空间中数学向量的项目(不要与vector集合类型混淆)。我有一个class Vector定义Vector.cpp,并宣布Vector.h我的目录结构如下:

项目 Vectors 的目录结构

当我尝试构建项目时,出现LNK2019未解决的外部符号错误。据我所知,我的三个文件都在构建路径上。

Vector.cpp

class Vector
{
private:
    double xComponent;
    double yComponent;
    double zComponent;
public:
    Vector(double x, double y, double z) : xComponent(x), yComponent(y), zComponent(z) {}

    double dotProduct(const Vector& other) const
    {
        return xComponent * other.xComponent + yComponent * other.yComponent + zComponent * other.zComponent;
    }
}

Vector.h

#ifndef VECTOR_H
#define VECTOR_H
class Vector
{
public:
    Vector(double x, double y, double z);
    double dotProduct(const Vector& other) const;
}
#endif

Vectors.cpp

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

using std::cout;
using std::endl;

int main()
{
    Vector foo = Vector(3, 4, -7);
    Vector bar = Vector(1.2, -3.6, 11);
    cout << foo.dotProduct(bar) << endl;
    return 0;
}

foo.dotProduct(bar)是唯一发生链接器错误的地方(构造函数上没有发生错误)。我已经尝试了一些其他的非构造函数方法,Vector它们也导致了链接器错误。为什么构造函数可以工作,而其他任何构造函数都不能?

这是尝试构建项目的输出:

1>------ Build started: Project: Vectors, Configuration: Debug Win32 ------
1>Vectors.obj : error LNK2019: unresolved external symbol "public: double __thiscall Vector::dotProduct(class Vector const &)const " (?dotProduct@Vector@@QBENABV1@@Z) referenced in function _main
1>C:\Users\John\Documents\Visual Studio 2017\Projects\Vectors\Debug\Vectors.exe : fatal error LNK1120: 1 unresolved externals
1>Done building project "Vectors.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
伊万莫斯卡列夫

你定义了这个类两次。一次在标题中,一次在 .cpp 文件中。

在 .cpp 文件中只保留函数定义:

#include "Vector.h"

Vector::Vector(double x, double y, double z) : xComponent(x), yComponent(y), zComponent(z) 
{
}

double Vector::dotProduct(const Vector& other) const
{
    return xComponent * other.xComponent + yComponent * other.yComponent + zComponent * other.zComponent;
}

每次写入时class SomeClass {};,您都定义了一个符号。命名空间中只能定义一个具有给定名称的符号。

请阅读有关声明和定义的更多信息。你可以从这里开始

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

即使两个类在同一目录中,我也不断收到“错误:找不到符号”

为什么我会收到这两个错误?

同一目录中的两个具有相同名称的文件

为什么不能#include同一目录中另一个文件中的类?

即使与我正在使用的文件位于同一目录中,也无法导入模块

为什么即使我只是在定义一个变量,也会收到 UnboundLocalError?

为什么即使它在 Ocaml 的终端中工作,我也会收到未绑定值错误

为什么Flask为404提供与我的应用程序位于同一目录中的文件

IAR Embedded Workbench:为什么我会收到链接器错误 [Li005]?

为什么我会收到有关“无此文件或目录”的Nginx错误?

为什么我总是收到这两个错误?

批量重命名txt文件以匹配文件夹,都在同一目录中吗?

的Ubuntu的。在同一目录中创建两个文件,第二个是第一个的副本

为什么我收到警告“遇到两个孩子使用相同的密钥,‘1’。” 即使数组中只有一个元素

为什么我会收到此错误 - “TypeError: Can only call FormData.append on instance of FormData”即使我只使用 FormData 的一个实例?

如何让我的scrapy读取同一目录中的文件?

为什么在安装Android Studio时会收到一个打开文件,用于写入错误?

为什么我会收到一个功能错误,说我需要在我的 python 代码中添加一个功能?

为什么我从同一个查询中得到两个不同的结果

将两个具有相同名称的互斥文件安装到同一目录

Python的文件未找到错误,即使文件在同一目录

为什么我会得到一个错误类型,其中的参数被用于同一目的两次

当我在同一目录或父目录中时,为什么“要求”的行为有所不同?

2页,一个渲染,一个不渲染,都在同一目录中

为什么我收到类型错误,这两个代码对我来说看起来都一样

为什么两个表都在同一个数据库中时Postgres告诉我跨数据库引用不可用?

尝试读取与 python 文件位于同一目录中的文件但收到 FileNotFoundError

为什么我的编译器会在Java中给我这两个错误?

在perforce中,如何删除指向目录的符号链接并在同一目录中添加文件?