我一直在编写一个基于控制台的文本编辑器......见鬼,我遇到了一个问题。这是我的第一个包含多个文件的项目,我用它来定义在 main.cpp 文件中使用的类。问题是这样的:
我在
textDisplay
中定义了一个类 textEditor.cpp
。头文件是:
#pragma once
#ifndef textEditor
#define textEditor
#include <string>
class txtDisplay {
public:
void display(int, int, std::string);
void toggle();
};
#endif // !textEditor
这是 textEditor.cpp 中的定义:
class txtDisplay {
private:
bool active;
string displayString;
int cursorRow;
int cursorCollumn;
public: ... here are my function definitions
然后我使用
txtDisplay display;
在 main.cpp 中实例化一个 txtDisplay 对象。但由于某种原因,当我运行该程序时,我收到此错误:
main.obj : error LNK2019: unresolved external symbol "public: void __cdecl txtDisplay::display(int,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?display@txtDisplay@@QEAAXHHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function main
1>main.obj : error LNK2019: unresolved external symbol "public: void __cdecl txtDisplay::toggle(void)" (?toggle@txtDisplay@@QEAAXXZ) referenced in function main
我的定义有错吗?也许是联动问题?它全部与#include“textEditor.h”以及所有这些相关联,所以我不知道它可能是什么
我尝试过重新定义、更改名称、使用不同的构造函数
使用基于控制台的 CMake 进行构建非常有用。 顺便问一下,你知道 Windows 上的 __declspec(dllexport) 和 __declspec(dllimport) 吗?