提问人:Harry 提问时间:7/7/2013 最后编辑:OswaldHarry 更新时间:7/7/2013 访问量:5863
命名空间中变量的未解析外部符号
Unresolved external symbol for variables in namespace
问:
我遇到了LNK2001问题:未解决的外部符号错误。只有当我的所有类都在我的命名空间中并引用我使用多个文件的全局变量时,它才会显示。下面是我的代码的示例代码:
引擎.h
#pragma once
namespace Engine{
#include "Core.h"
#include "Display.h"
#include "Box.h"
// ... some code...
}
using namespace Engine;
核心.cpp
#include "Engine.h"
// ...some code...
核心.h
extern Matrix matrix;
// ... some code...
显示.cpp
#include "Engine.h"
Matrix matrix;
// ... some code...
显示.h
// ... some code...
框.cpp
void Box::draw(PxShape *shape){
// matrix=.. some code...
}
框.h
// ... some code...
错误信息
1>Box.obj:错误LNK2001:未解析的外部符号“struct Engine::Matrix Engine::matrix”(?matrix@Engine@@3UMatrix@1@A)
当我评论命名空间时,一切都按预期工作。这是我第一次想要使用命名空间,我不知道该怎么做。
答:
4赞
Joe Z
7/7/2013
#1
您的指令(以及您的接口定义)在里面,但您的实现似乎不在里面。这给了你链接错误。#include
namespace Engine
您还需要将代码主体包装在每个 .cpp 文件中。namespace Engine
结婚
#include "engine.h"
namespace Engine
{
// implementation goes here
}
评论
0赞
Harry
7/7/2013
谢谢,我认为.cpp文件会自动包含在标头命名空间中。
0赞
Richa Aggarwal
2/14/2017
谢谢!它解决了我的问题。节省了我很多时间。
评论
Engine
Engine