无法解决 VS 上的LNK2019

Couldn't resolve LNK2019 on VS

提问人:Krobbolo 提问时间:3/18/2022 更新时间:3/18/2022 访问量:40

问:

编码时,我收到以下错误:1>giochino.obj : error LNK2019: riferimento al simbolo esterno "public: void __thiscall entity::print_Pv(int,int)" (?print_Pv@entity@@QAEXHH@Z) non risolto nella funzione _main 1>C:\Users\tomma\source\repos\giochino\Debug\giochino.exe : fatal error LNK1120: 1 esterni non risolti 1>Compilazione progetto "giochino.vcxproj" NON COMPLETATA.

看来我找不到解决方案

这是代码,虽然很短,但我找不到问题

我创建的库:

    #include <iostream>

using namespace std;

class entity{
public:
    int pv_left;
    int Max_pv;
    //find the percentage of life left and print a bar filled of the same percentage
    void print_Pv(int pv_now, int pv_max) {
        char pv_bar[10];
        int pv_perc = ( pv_now / pv_max) * 10;
        for (int i = 0; i < 10; i++) {
            if (i <= pv_perc) {
                pv_bar[i] = '*';
            }
            else if (i > pv_perc) {
                pv_bar[i] = '°';
            }
        }
        for (int i = 0; i < 10; i++) {
            cout << pv_bar[i];
        }
    }
};

库的标头

#pragma once
#include <iostream>

class entity {
public:
    int pv_left;
    int Max_pv;
    void print_Pv(int pv_now, int max_pv);
};

和主要方法

#include "game_library.h"

using namespace std;


entity Hero;

int main()
{
    Hero.Max_pv = 100;
    Hero.pv_left = 10;
    Hero.print_Pv(Hero.pv_left, Hero.Max_pv);
}

C++ Visual-Studio 链接 链接器错误

评论


答:

1赞 pm100 3/18/2022 #1

您的实现文件是错误的,您需要

#include "your.h"
void entity::print_Pv(int pv_now, int pv_max) {
    char pv_bar[10];
    int pv_perc = ( pv_now / pv_max) * 10;
    for (int i = 0; i < 10; i++) {
        if (i <= pv_perc) {
            pv_bar[i] = '*';
        }
        else if (i > pv_perc) {
            pv_bar[i] = '°';
        }
    }
    for (int i = 0; i < 10; i++) {
        cout << pv_bar[i];
    }
}

您不能再次声明该类,而只能声明未放入 .h 文件的方法主体