gpt4 book ai didi

c++ - 使用另一个文件夹中的源代码时 Unresolved external 问题

转载 作者:太空狗 更新时间:2023-10-29 21:48:50 24 4
gpt4 key购买 nike

我会尽可能详细地解释我的问题。

基本上我在一个 visual studio 2010 解决方案中有两个项目。一个项目是我正在制作的游戏引擎的源代码,它编译成一个.dll。第二个项目仅包含 main.cpp 文件,其中包含来自 Engine 项目的文件。我已经设置了测试项目以包含引擎项目的源代码目录( header 和 cpp),但我遇到了 Unresolved external 问题。我所有的引擎类都在命名空间内。

main.cpp

#include <Engine/input.h>
#include <Engine/graphics.h>
#include <Engine/sound.h>

using namespace Engine;

int main()
{
Renderer* renderer = new Renderer();
etc.
}

然后在我的代码中它看起来像

Graphics.h

namespace Engine
{
class Renderer
{
void draw();
}
}

Graphics.cpp

namespace Engine
{
void Renderer::draw()
{
}
}

上述引擎的源代码位于与 main.cpp 不同的文件夹中。我已经尝试将所有代码放入 main.cpp 的文件夹中,我可以毫无问题地进行编译。将它放在另一个文件夹中会导致我在 main.cpp 中使用的函数的外部无法解析。

感谢您的帮助!

最佳答案

首先,您需要通过_declspec(dllexport) 导出符号。

namespace Engine
{
_declspec(dllexport) class Renderer
{
void draw();
}
}

当您导入 header 时,您告诉它使用 _declspec(dllimport) 导入符号。这种双重功能可以通过宏来实现。

其次,您需要将生成的.lib文件包含在包含main.cpp的项目的项目设置中。

关于c++ - 使用另一个文件夹中的源代码时 Unresolved external 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9944048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com