是什么阻止我创建我的类的非指针变量?

时间:2014-05-25 19:42:51

标签: c++ visual-c++ c++11

编辑::这似乎是Visual Studio 2013的一个错误。我在下面发布了答案。

由于某些我无法理解的原因,我无法创建我的类的非指针变量 LineBuffer 。我的代码中有很多类使用相同的格式,但它们可以工作。我尝试更改名称,因为我认为类名可能在别处使用但仍然失败。我错过了一些简单的事吗?在尝试解决此问题的最后2个小时内,我找不到拼写错误吗?这实际上让我很头疼。这里的任何帮助将非常感谢!

class TestClass
{
    LineBuffer lineBuffer;
    void LoadLine()
    {
        lineBuffer = LineBuffer();
    }
};

我得到的错误如下:

错误3错误LNK1120:2个未解析的外部E:\ SoreTooth \ Development \ TestProjects \ GraphicsDev-Test \ Debug \ GraphicsDev-Test.exe 1 1 GraphicsDev-Test

错误2错误LNK2019:未解析的外部符号“__declspec(dllimport)public:__ thishisall LineBuffer ::〜LineBuffer(void)”(__ imp _ ?? 1LineBuffer @@ QAE @ XZ)在函数__unwindfunclet $ ?? 0TestClass @@ QAE中引用@XZ $ 10 E:\ SoreTooth \ Development \ TestProjects \ GraphicsDev-Test \ GraphicsDev-Test \ main.obj GraphicsDev-Test

错误1错误LNK2019:未解析的外部符号“__declspec(dllimport)public:__ thistall LineBuffer :: LineBuffer(void)”(__ imp _ ?? 0LineBuffer @@ QAE @ XZ)在函数“public:__thiscall TestClass :: TestClass”中引用( void)“(?? 0TestClass @@ QAE @ XZ)E:\ SoreTooth \ Development \ TestProjects \ GraphicsDev-Test \ GraphicsDev-Test \ main.obj GraphicsDev-Test

LineBuffer.h类的代码:

#ifndef _LineBuffer_
#define _LineBuffer_

#include "GraphicsManagement_API.h"

class GraphicsManagement_API LineBuffer
{
public:
    LineBuffer();
    ~LineBuffer();
};

#endif

LineBuffer.cpp的代码:

#include "LineBuffer.h"

LineBuffer::LineBuffer()
{

}

LineBuffer::~LineBuffer()
{

}

因为我知道你会问,GraphicsManagement_API.h的代码:

#ifndef _GraphicsManagement_API_
#define _GraphicsManagement_API_

#include <d3d10.h>
#include <D3DX10.h>

#ifdef _GraphicsManagement_API_EXPORTS_
#define GraphicsManagement_API __declspec(dllexport) 
#else
#define GraphicsManagement_API __declspec(dllimport) 
#endif
#endif

但这恰好可行

class TestClass
{
    LineBuffer * lineBuffer;
    void LoadLine()
    {
        lineBuffer = new LineBuffer();
    }
};

1 个答案:

答案 0 :(得分:1)

如果碰巧遇到此问题,请通过删除相关文件然后创建全新文件来重新创建相关文件。在我的情况下,当我创建 LineBuffer.cpp 时,我不小心将其命名为 LineBuffer.ccp ,显然这不会构建,Visual Studio也不会将其识别为。 cpp < / strong>文件。我想我可以使用Visual Studio Solution Explorer重命名该文件。显然,这并不像人们期望的那样有效。我不得不删除整个文件并创建一个新文件。一旦我这样做,它就成功建立了。我不确定这是否是Visual Studio 2013错误或者是否是设计错误。无论哪种方式,这都是适合我的解决方案。