c++ - 链接器提示找不到现有方法 (C++)

标签 c++ visual-c++ compilation linker

我有一个在头文件中定义并在源文件中声明的方法。当我调用该方法时,链接器抛出一个错误,说它找不到错误。

Error 1 error LNK2019: unresolved external symbol "public: class Chunk * __thiscall World::getChunk(short,short)" (?getChunk@World@@QAEPAVChunk@@FF@Z) referenced in function _main

Error 2 error LNK1120: 1 unresolved externals

世界.h:

#pragma once
#include <map>
#include <vector>
#include "Chunk.h"

class World {
public:
    World();
    ~World();
    void generateChunk(short x, short z);
    inline Chunk* getChunk(short x, short z);
private:
    std::vector< std::vector<Chunk*> > loadedChunks;
};

世界.cpp:

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

World::World() : loadedChunks(1, std::vector<Chunk*>(1)) {}

World::~World() {
    for(unsigned short x = loadedChunks.size(); x > 0; --x)
        for(unsigned short z = loadedChunks[x].size(); z > 0; --z) {
            std::cout << "Destructed" << std::endl;
            delete loadedChunks[x][z];
        }
}

void World::generateChunk(short x, short z) {
    Chunk chunk(x, z);
    delete loadedChunks[x][z];
    chunk.generate();
    loadedChunks[x][z] = &chunk;
}

Chunk* World::getChunk(short x, short z) {
    return loadedChunks[x][z];
}

稍后当我运行时:

World world;
world.generateChunk(0, 0);
world.getChunk(0, 0);

它不会编译/链接上述错误消息。

最佳答案

您必须在头文件中包含函数定义,因为您将其标记为内联。

inline Chunk* getChunk(short x, short z);

关于c++ - 链接器提示找不到现有方法 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17910088/

相关文章:

c++ - 如何在函数内更改此数组?

c++ - boost::asio io_service::run_one 导致段错误

c++ - OpenCL 适用于 AMD 但不适用于 Nvidia

java - 使用 Gradle 的 Eclipse 多个项目中的访问限制

C++ CLR 不会在调试之外编译

javascript - 如何从 javascript xpcom 组件使用 C++ xpcom 组件

c++ - 如果没有发生错误,哪个 WinAPI 函数将最后一个错误设置为 ERROR_SUCCESS?

windows - 如何优雅地停止正在监听 Windows 管道的服务器进程

c++ - 在 Eigen 中使用原始缓冲区进行矩阵时间 vector 运算

c++ - 如何为大多数系统编译 LD_PRELOAD