【问题标题】:LNK2019 error trying to compile project using tmxlite尝试使用 tmxlite 编译项目时出现 LNK2019 错误
【发布时间】:2018-07-14 05:32:48
【问题描述】:

我不断收到这些错误:

在函数“bool __cdecl tmx::decompress(char const *,class std::vector &,int,int)”(?decompress@tmx@@YA_NPBDAAV?$vector@EV?$分配器@E@std@@@std@@hh@Z)

函数“bool __cdecl tmx::decompress(char const *,class std::vector > &,int,int)”(?decompress@tmx@@YA_NPBDAAV?$vector@EV? $allocator@E@std@@@std@@HH@Z)

LNK2019 未解析的外部符号 _mz_inflateEnd 在函数“bool __cdecl tmx::decompress(char const *,class std::vector > &,int,int)”中引用 (?decompress@tmx@@YA_NPBDAAV?$vector@EV? $allocator@E@std@@@std@@HH@Z)

当我尝试编译我的 tmxlite 项目时。我项目中唯一的源代码文件是 tmxlite 附带的。

#include "stdafx.h"
#include <SFML/Graphics.hpp>

#include <SFML/Graphics/RenderWindow.hpp>
#include <SFML/Window/Event.hpp>

#include <tmxlite/Map.hpp> 

#include "C:\Program Files (x86)\tmxlite\SFMLExample\src\SFMLOrthogonalLayer.hpp"

#include "FreeFuncs.cpp"
#include "ImageLayer.cpp"
#include "Map.cpp"
#include "miniz.c"
#include "Object.cpp"
#include "ObjectGroup.cpp"
#include "Property.cpp"
#include "TileLayer.cpp"
#include "Tileset.cpp"
#include "pugixml.cpp"

using namespace sf;

int main()
{
        RenderWindow window(VideoMode(800, 600), "SFML window");

        tmx::Map map;
        map.load("assets/demo.tmx");

        MapLayer layerZero(map, 0);
        MapLayer layerOne(map, 1);
        MapLayer layerTwo(map, 2);

        while (window.isOpen())
        {
            Event event;
            while (window.pollEvent(event))
            {
                if (event.type == Event::Closed)
                    window.close();
            }

            window.clear(Color::Black);
            window.draw(layerZero);
            window.draw(layerOne);
            window.draw(layerTwo);
            window.display();
        }

    return 0;
}

我正在使用 Visual Studio Community 2017

【问题讨论】:

  • 你包含什么cpp文件?

标签: c++ tiled tmx


【解决方案1】:

将现有的src/tmxlite/miniz.* 文件添加到您的项目中。仅在项目中包含Map.* 是不够的,您应该将所有源文件添加到项目中。

更好的方法是将现有项目tmxlite.vcxproj 添加到解决方案中,并将此项目添加到项目的依赖项中。

不要使用 #include 指令将 .cpp 文件包含到您的源代码中。将它们添加到您的项目树中。

【讨论】:

  • 对不起,我应该在我的代码中包含它。我已经包含了 miniz.h。我仍然遇到同样的错误。
  • 没有#include。在项目视图中右键单击您的项目并将现有的火灾添加到项目中,包括 .h 和 .c 文件。从您的源中删除所有#include 的.cpp。
  • 所以右键单击我的项目并添加来自 src(不是 CMakeLists)和 src/detail 的所有文件?我需要 .hpp 文件还是只需要 .cpp 文件?
  • 头文件和源文件。不要忘记添加 .c 文件。
  • 我不知道问题出在哪里,但它不起作用。它现在给了我数百个错误。
猜你喜欢
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
  • 2021-07-06
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多